好的,这是我的问题。我有一个简单的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如下所示:
ajax.php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $foo = json_encode($arr); echo $foo;
当我运行jQuery脚本时,我收到了Firebug的200:OK响应,而当我查看响应时,得到了以下内容: {"a":1,"b":2,"c":3,"d":4,"e":5}
{"a":1,"b":2,"c":3,"d":4,"e":5}
但是,在.body-item div中没有显示任何内容,也没有尝试使用alert()。
另外,如果我运行相同的代码而没有:: dataType: 'json'部分,那么我将正确输出所有内容。
dataType: 'json'
这可能是什么问题?
使用dataType: 'json'时jQuery调用JSON.parse()并将结果放入data。您不应该自己调用它,因为data它不是JSON字符串,而是已解析的对象。所以做:
JSON.parse()
data
$('body-item').html(data.b);
从文档中:
“ json”:将响应评估为JSON并返回一个JavaScript对象。