为什么我对JSON的ajax调用返回为空?

为什么我对JSON的ajax调用返回为空?,ajax,json,Ajax,Json,警报出现,我可以将虚拟文本显示在html中,例如$('#results').html(“非常烦人”) 如果我只是转到页面,php会回显json_encode数组,那么我做错了什么???在回调中,数据将是反序列化对象,而不是json字符串。因此,当您将其传递到html中时,基本上就是调用toString并传递结果。如果data是一个数组,则默认情况下会执行array\join。如果它是一个对象,toString将为您提供[object object] 您应该在results元素中看到一些东西,但这

警报出现,我可以将虚拟文本显示在html中,例如$('#results').html(“非常烦人”)


如果我只是转到页面,php会回显json_encode数组,那么我做错了什么???

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

您应该在
results
元素中看到一些东西,但这里的要点是,如果您的目标是处理
data
中的数据,那么它已经为您解码了

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

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

        alert("data gotten!");
    }, 'json');
});
$(文档).ready(函数(){
$.post('matchEngine.php',
功能(数据){

$(“#结果”).text(数据);//尝试
$(“#结果”).html(JSON.stringify(数据));
@mikeB cheers也可以看到输出。
$(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
});