【问题标题】:Data not returning from ajax POST没有从 ajax POST 返回的数据
【发布时间】:2015-06-11 19:39:05
【问题描述】:

我使用这个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"}

这可能是什么原因,我可以做些什么来解决它?

【问题讨论】:

  • 您返回的是字符串,而不是 JSON。
  • 在你的 mysql_fetch_array 添加一个标志 MYSQL_ASSOC 。否则你不会有数组键作为标题。为了测试更好的 print_r($r);检查你在 $r 有什么
  • 你应该看看 json_encode。
  • @RoryMcCrossan 你能建议一个修复方法吗?

标签: javascript php jquery ajax post


【解决方案1】:

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

【讨论】:

  • 我这样做了,它仍然返回null
  • ... 或者自己创建数组并传回:$results = ['id' =&gt; $id, 'title' =&gt; $r['title']]; echo json_encode($results); 哦,还需要提供具体的header。检查此主题:stackoverflow.com/questions/4064444/…
  • 你确定 $r['title'] 或 $id 是在服务器端设置的吗?
【解决方案2】:
<?
  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));
},

【讨论】:

    【解决方案3】:

    return json_encode($r); 然后你可以成功读取变量$r

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2020-07-02
      相关资源
      最近更新 更多