使用Jquery时无法显示返回的JSON

时间:2012-02-08 17:11:39

标签: php jquery json post

我正在尝试检索我的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响应,但它仍然无效。

3 个答案:

答案 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:服务器所需的数据类型。

docs

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

  

默认值:智能猜测(xml,json,脚本,文本,html)。

嗯,我猜那个猜测不是那么聪明...... =)

答案 2 :(得分:0)

两个选项:

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

其次,在第一次提醒之前,请添加:

var obj = jQuery.parseJSON(data);

然后alert(obj.htmlOutput);

看看它是否适合你