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

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

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

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

4

1 回答 1

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
});
于 2013-06-06T18:05:54.793 回答