无法检索通过js发送的数据

时间:2018-03-28 10:43:28

标签: javascript php jquery

我使用以下内容发送数据:

$(".save_post").on("click", function() {
  var saveId = $(".my_post_id").attr("data-id");
  console.log(saveId);
  $.ajax({
    url: "save.php",
    data :saveId, 
    type: 'POST',
    success: function(json_object) {
      console.log(json_object);
      $(".save_post").text("Data has been saved.");
    },
    error: function(json_object) {
      console.log(json_object);
      $(".save_post").text("Failed to save data !");
    }
  });
});

console.log(saveId);时的控制台值 248

当我点击按钮发送数据时,其文字显示:数据已保存。

但是当我打开save.php时,我得到一个空页。

PHP代码:

<?php
    $post_data = $_POST['data'];
    echo $post_data;
?>

我要做的就是保存一个javascript变量,以便以后能够检索它。

3 个答案:

答案 0 :(得分:2)

您忘记发送包含以下值的密钥:

data: { data: saveId }

您还应该使用data()方法获取data-*属性,而不是attr()。这是一个完整的例子:

$(".save_post").on("click", function() {
  $.ajax({
    url: "save.php",
    data: { data: $(".my_post_id").data("id") }, 
    type: 'POST',
    success: function(response) {
      console.log(response);
      $(".save_post").text("Data has been saved.");
    },
    error: function(x, s, e) {
      $(".save_post").text("Failed to save data !");
    }
  });
});

请注意,这假设您只有一个.my_post_id元素。如果您有多个,那么data-id将只从DOM中找到的第一个读取。

此外,没有“JSON对象”这样的东西。提供给success处理程序的参数是一个对象(或数组),它已从响应中的JSON格式字符串反序列化。

同样,error处理程序不接受包含JSON的参数,因此签名不正确。如果您不确定哪些jQuery AJAX处理程序可用的参数,我建议检查jQuery $.ajax() documentation

答案 1 :(得分:0)

您需要发送JSON数据,以便php可以使用密钥

来检索相同的数据
$(".save_post").on("click", function() {
var saveId = $(".my_post_id").attr("data-id");
console.log(saveId);
$.ajax({
url: "save.php",
data : {'data':saveId}, // Add object
type: 'POST',
success: function(json_object) {
  console.log(json_object);
  $(".save_post").text("Data has been saved.");
},
error: function(json_object) {
  console.log(json_object);
  $(".save_post").text("Failed to save data !");
}

}); });

答案 2 :(得分:-1)

试试这个:

$post_data = $_POST;
echo $post_data;

它适用于你。