为什么我的ajax调用JSON回来了?

时间:2013-06-06 18:01:47

标签: ajax json

$(document).ready(function() {
    $.post('matchEngine.php',
        function(data){
        $('#results').html(data);

        alert("data gotten!");
    }, 'json');
});

警报出现,我可以在html中显示虚拟文字,例如$('#results')。html("非常烦人");

如果我只是去页面,php会回应一个json_encode数组,那么我做错了什么?

1 个答案:

答案 0 :(得分:2)

在回调中,data将是反序列化对象,而不是JSON字符串。因此,当您将其传递到html时,您基本上会在其上调用toString并传递结果。如果data是一个数组,默认情况下会Array#join。如果它是一个对象,toString将为您提供[object Object]

您应该在results元素中看到某些内容,但这里的要点是,如果您的目标是使用data中的数据,那么它已经是为你解码。

如果要查看脚本返回的实际JSON文本,可以通过告诉jQuery 而不是为您反序列化它,并确保何时将其转储到正确处理任何HTML实体或特殊字符的HTML,如下所示:

$(document).ready(function() {
    $.post('matchEngine.php',
        function(data){
        $('#results').text(data); // <== `text` instead of `html`
                                  //     makes sure HTML characters
                                  //     like < are shown correctly

        alert("data gotten!");
    }, 'text');                   // <== data type 'text' instead of
                                  //     'json' tells jQuery NOT to decode
                                  //     it for you
});