$(document).ready(function() {
$.post('matchEngine.php',
function(data){
$('#results').html(data);
alert("data gotten!");
}, 'json');
});
警报出现,我可以在html中显示虚拟文字,例如$('#results')。html("非常烦人");
如果我只是去页面,php会回应一个json_encode数组,那么我做错了什么?答案 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
});