Ajax DataType:JSON响应是:OK但没有输出?

好的,这是我的问题。 我有一个简单的jQuery Ajax请求,当我将DataType设置为“JSON”时,我无法获得。

var form_data = { "id": msg, "token": token }; $.ajax({ type: 'POST', url: "ajax.php", data: form_data, dataType: 'json', beforeSend:function(){ // this is where we append a loading image }, success: function(data) { var thing = JSON.parse(data); $('.body-item').html(thing.b); }, error: function() { alert('error'); } }); 

这实际上是我的ajax文件。 ajax.php看起来像这样:

  $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $foo = json_encode($arr); echo $foo; 

当我运行jQuery脚本时,我得到了一个200:OK响应Firebug,当我看一下响应时,得到了以下内容: {"a":1,"b":2,"c":3,"d":4,"e":5}

但是我不会在.body-item div中显示任何内容,也不会尝试使用alert()。

此外,如果我运行相同的代码没有: dataType: 'json'部分,我会正确输出所有内容。

这可能是什么问题?

当您使用dataType: 'json' ,jQuery调用JSON.parse()并将结果放入data 。 您不应该自己调用它,因为data不是JSON字符串,而是解析对象。 所以这样做:

 $('body-item').html(data.b); 

从文档 :

“json”:将响应计算为JSON并返回JavaScript对象。