在PHP中使用JSON编码和JSON编码,使用jQuery ajax调用返回空对象
我使用PHP PEAR类将数组编码为JSON字符串,然后在响应中回显,如下所示:在PHP中使用JSON编码和JSON编码,使用jQuery ajax调用返回空对象,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我使用PHP PEAR类将数组编码为JSON字符串,然后在响应中回显,如下所示: $.ajax({ url: '/ajax/get_rule.php', dataType: 'json', data: { feature : feature, ajax : 1
$.ajax({
url: '/ajax/get_rule.php',
dataType: 'json',
data: {
feature : feature,
ajax : 1
},
success: function(resp) {
console.log('in here');
console.log('response: ' + resp);
},
error : function() {
console.log('there was an error...');
}
});
在上面的示例中,Registry('json')
是一个Services\ujson
对象
我还尝试了PHP内置函数json\u encode
:
echo Registry('json')->encode(array('ajax' => 1, 'feature' => 'rfc1872'));
exit;
这两种方法都不起作用,尽管我没有陷入上述jQuery ajax调用中的错误回调,但我在Firebug中得到了一个空对象的响应值response:[object object]
为什么我不会收到带有JSON编码字符串的jQuery代码的响应?正如Felix King在上面的评论中所提供的,这实际上是由于将
resp
转换为带有以下内容的字符串造成的:
echo json_encode(array('ajax' => 1, 'feature' => 'rfc1872'));
exit;
改为:
console.log('response: ' + resp)
解决了问题。你怎么知道它是空的?我没有看到您将其记录到控制台<代码>控制台日志('响应:'+resp)将首先将对象转换为字符串,并且对象的默认字符串表示形式是
“[对象对象]”
,无论它是否具有属性。什么是console.log(resp)代码>给你看?如果您没有得到JSON作为响应,我相信成功回调甚至不会被执行。哦,gawd,这就是它。我更改了console.log('response:'+resp)代码>到控制台日志(resp)代码>如您所建议,对象将正确通过。非常感谢,你可以提交作为一个答案,我会很高兴地接受。谢谢你指出这一点。
console.log(resp);