可以';t display在使用Jquery时返回JSON


Can't display returned JSON when using Jquery

我正在尝试检索在我的php脚本uingjquery中生成的以下json。但是,我无法显示它。如果我提醒它,它只显示"未定义"。使用$('#demo').html(data.htmlOutput)来显示html也没有任何作用。有人能指出我做错了什么吗?

$arr = array('htmlOutput' => '<b>hello</b>', 'no_rows' => 'balh');
echo json_encode($arr);
$.post('get-offers.php', $("#offerForm").serialize(), function(data) {
        alert (data.htmlOutput);
        alert (data.no_rows)
        $('#demo').html(data.htmlOutput);
}

我可以在FB控制台中看到json响应,但是,它仍然什么都不做。

告诉jquery您需要json,这是最后一个参数:

$.post('get-offers.php', $("#offerForm").serialize(), function(data) {
        alert (data.htmlOutput);
        alert (data.no_rows)
        $('#demo').html(data.htmlOutput);
}, "json");

您已经告诉jquery您需要json对象,使用dataType如下所示:

.post('get-offers.php', $("#offerForm").serialize(), function(data) {
        alert (data.htmlOutput);
        alert (data.no_rows)
        $('#demo').html(data.htmlOutput);
},'json'); //<====

dataType:预期来自服务器的数据类型。

文档

我认为jquery将能够猜测它是一个json对象,因为在他们的文档中写道:

默认值:智能猜测(xml,json,script,text,html)。

好吧,我想这个猜测不是那么聪明=)

两个选项:

首先,将"json"设置为$.post的最后一个参数,告诉它它正在等待json响应。

第二,在你的第一个警报之前,添加这个:

var obj = jQuery.parseJSON(data);

然后alert(obj.htmlOutput);

看看这是否适用于