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

时间:2014-03-06 21:37:33

标签: javascript php jquery ajax json

好的,这是我的问题。我有一个简单的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脚本时,我使用Firebug获得了200:OK响应,当我看到响应时,我得到了以下内容:{"a":1,"b":2,"c":3,"d":4,"e":5}

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

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

这可能是什么问题?

1 个答案:

答案 0 :(得分:2)

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

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

来自documentation

  

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