有些奇怪的事情发生了,我的AJAX请求返回一个数组,但整个事情本身就是一个字符串。
这基本上总结了它:
PHP
$item = array();
$item[] = array(
'title' => 'awesome title',
'permalink' => 'some url'
);
json_encode($item);
的jQuery
$.ajax({
type: 'post',
url: ajaxurl,
data: {
action: 'a_grid_callback',
type: method
},
success: function(msg) {
console.debug(msg);
}
});
调试返回:
[{"title":"awesome title","permalink":"some url"}]0
如果我要做alert(msg.length)
,我会得到一个相当于上面代码长度的长数字。
答案 0 :(得分:1)
$item = array(
'title' => 'awesome title',
'permalink' => 'some url'
);
json_encode($item);
// Add exit here
exit;
答案 1 :(得分:1)
$.ajax({
type: 'post',
url: ajaxurl,
data: {
action: 'a_grid_callback',
type: method
},
success: function(msg) {
eval("data="+msg);
var title = data.title;
console.debug(title);
}
});
答案 2 :(得分:1)
尝试设置dataType: 'json'
看起来浏览器将响应解释为字符串。
答案 3 :(得分:0)
非关联数组作为数组输出
你必须做这样的事情
json_encode($item, JSON_FORCE_OBJECT)
或者
$item[foo] = array(
'title' => 'awesome title',
'permalink' => 'some url'
);
或者
$item = array(
'title' => 'awesome title',
'permalink' => 'some url'
);