数据未从ajax POST返回

时间:2015-04-07 08:59:52

标签: javascript php jquery ajax post

我使用这个jQuery函数通过Ajax获取数据:

function addContentPrt(cid){
   $.ajax({
    url: "<?=parseLink('addContent.php')?>",
    type: "POST",
    cache: true,
    dataType:'json',
    data: {id: cid},
    success: function(returnedData){
      console.log(returnedData);
    },
    error: function (xhr, tst, err) {
      console.log(err);
    } 
  });
}

并在接收端:

<?
  header("Content-Type: application/json", true);

  if(isset($_POST['id'])) {
    $id = $_POST['id'];
  }

  $sql = mysql_query("SELECT * FROM pharmacies WHERE id=$id");

  $r = mysql_fetch_array($sql);
  echo $r['title'];
  echo $id;
?>

echo $id确实返回到ajax,但不是$r['title'],它在控制台中变为null。如果我添加一些虚拟文本,例如hello world,我会收到一个synthax错误SyntaxError: Unexpected token h {stack: (...), message: "Unexpected token h"}

这可能是什么原因,我该怎么做才能解决它?

3 个答案:

答案 0 :(得分:4)

<?
  header("Content-Type: application/json", true);

  if(isset($_POST['id'])) {
    $id = $_POST['id'];
  }

  $sql = mysql_query("SELECT * FROM pharmacies WHERE id=$id");

  $r = mysql_fetch_array($sql);
  echo json_encode('id' => $id, 'title' => $r['title']);
?>

并在你的ajax成功:

success: function(returnedData){
  console.log(JSON.parse(returnedData));
},

答案 1 :(得分:0)

在ajax中,您将数据类型指定为json,这是服务器期望的格式。因此,为了获得结果,您需要从服务器返回json结果。通过使用json_encode($ r),其中$ r可以是任何数组。

答案 2 :(得分:0)

return json_encode($r);然后您可以在成功

中读取变量$r