1

我试图从我的 ajax 调用中获取一个变量:

$.ajax({
    type: "POST",
    url: "insert",
    data: { title:title, start:dstart, end:dend },
    contentType: "application/json",
    dataType : 'json',
    success : function(data) {
       data = JSON.parse(data);
           console.log('data = '); // is showing the data with double quotes
           console.log(data);
    }
});

还有我的PHP:

$id = $calendar->getId();
$json = array ( 'id' => $id );
var_dump(json_encode($json));
json_encode($json);

通过 myvar_dump我可以看到 my json_encore,例如:

string '{"id":156}' (length=10)

但在我的ajax()成功中,console.log()不要在我的控制台中显示任何内容。

我在哪里可以看到我success: function(data)的是否为空?我会在我的 ajax 成功中捕捉到 id。

更新:问题已修复。事实上,我正在使用 symfony,我还没有看到在我的操作插入中我的 PHP 在哪里,symfony (indexSuccess.php) 调用的页面不是空的,这就是它根本不工作的原因。)

4

2 回答 2

5

如果你看一下你的 PHP 代码,你基本上对 json_encode() 的输出什么都不做......

请将您的 PHP 代码的最后一行更新为:

echo json_encode($json);

现在你应该得到你想要的数据作为响应。

编辑:@1nsan3,您在评论中询问 echo 是否与 var_dump() 相同...我想您在这里得到了答案:PHP 中的 echo、print 和 print_r 有什么区别?

编辑2:

请删除 JSON.parse() 调用。使用时,您的 AJAX 请求的响应已经被 jQuery 解析dataType : 'json',如http://api.jquery.com/jQuery.ajax中所述

于 2013-05-23T08:05:39.483 回答
-2

你确定你的 php 返回有效的 json 数据吗?

php

$id = $calendar->getId();
$json = array('id' => $id);
echo json_encode($json);         <-- your php code must echo only this valid json, 
return;                              make sure no other values are echoed 
                                     above or below this which will break json.

js

success : function(data) {
  if($.trim(data) != '') {
    console.log(data);
  } else {
    console.log('no data');
  }
}
于 2013-05-23T08:02:45.257 回答