AJAX请求返回某种形式的长字符串

时间:2011-11-10 03:05:04

标签: php jquery ajax arrays json

有些奇怪的事情发生了,我的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),我会得到一个相当于上面代码长度的长数字。

4 个答案:

答案 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'
);