数据未从ajax POST返回


Data not returning from 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这样的伪文本,我会得到一个合成错误SyntaxError: Unexpected token h {stack: (...), message: "Unexpected token h"}

造成这种情况的原因是什么?我能做些什么来解决它?

<?
  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));
},

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

return json_encode($r);,然后您可以在成功的中读取变量$r