我正在尝试检索我的php脚本uing jquery中生成的以下json。但是,我无法显示它。如果我提醒它,它只显示'undefined'。使用$('#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响应,但它仍然无效。
答案 0 :(得分:3)
告诉jquery你期待json,这是最后一个论点:
$.post('get-offers.php', $("#offerForm").serialize(), function(data) {
alert (data.htmlOutput);
alert (data.no_rows)
$('#demo').html(data.htmlOutput);
}, "json");
答案 1 :(得分:2)
你告诉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,脚本,文本,html)。
嗯,我猜那个猜测不是那么聪明...... =)
答案 2 :(得分:0)
两个选项:
首先,将'json'设置为$.post
的最后一个参数,告诉它它正在等待JSON响应。
其次,在第一次提醒之前,请添加:
var obj = jQuery.parseJSON(data);
然后alert(obj.htmlOutput);
看看它是否适合你