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

发布于 12-14 22:33 字数 720 浏览 1 评论 0原文

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

Something weird is going on, my AJAX Request is returning a array but the whole thing is a string itself.

This basically sums it up:

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);
    }
});  

The debug returns this:

[{"title":"awesome title","permalink":"some url"}]0

If I was to do alert(msg.length) I would get a long number equivalent to the length of the code above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

九命猫2024-12-21 22:33:40

尝试设置 dataType: 'json' 看起来浏览器正在将响应解释为字符串。

Try to set dataType: 'json' Looks like the browser is interpreting the response as a string.

一笔一画续写前缘2024-12-21 22:33:40
$item = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);

json_encode($item);


// Add exit here
exit;
$item = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);

json_encode($item);


// Add exit here
exit;
君勿笑2024-12-21 22:33:40
$.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);
    }
});  
$.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);
    }
});  
十雾2024-12-21 22:33:40

非关联数组输出为数组

您必须执行类似这样

json_encode($item, JSON_FORCE_OBJECT)

或这样

$item[foo] = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);

或这样的操作

$item = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);

Non-associative arrays output as arrays

You'll have to do something like this

json_encode($item, JSON_FORCE_OBJECT)

or this

$item[foo] = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);

or this

$item = array(
    'title'     => 'awesome title',
    'permalink' => 'some url'
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文