javascript - jQuery ajax 怎么处理返回的 json 数据?
ringa_lee
ringa_lee 2017-04-10 17:50:24
[JavaScript讨论组]

要是在php返回一个

echo { name:"yxl", age:4};

在jQuery处理的时候,怎么写呢?
是下面这样写吗?


$.get('.php',{:''},F ,'json');    //★★这里我直接写'json' 对吗?

function F(result , success , xhr)
{
    alert( result.name );   //★★这里是这样调用吗?
}
ringa_lee
ringa_lee

ringa_lee

全部回复(5)
PHP中文网

后端返回的是一个json字符串,而不是对象。使用JavaScript原生的JSON.parse方法把json字符串解析为对象,就可以用了。

高洛峰

jquery的ajax回调函数的返回值时有规律的:

我推荐你看一下JavaScript权威指南第19章第6节:jquery中的ajax。
虽然书上面说的jquery版本有点老(1.3)。但是ajax那块的原理说的还是比较透彻的。

怪我咯

如果返回的是json对象的话,是可以result.name。如果返回的是json字符串的话,需要转化成json对象来操作。
转化方式,有三种第一,eval(不推荐),第二,jquery的parseJSON(建议),第三,JSON.parse(推荐)

黄舟

代码如下:

js

$.ajax({
            type: 'get',
            url: '.php',
            data: {},
            async: true,
            dataType: 'json',
            success: function (m, status, xhr) {
                try { // 避免eval产生的报错
                   console.log(m.name + '   ' + m.age); // 对象时
                   console.log(eval('(' + m + ')').name + '   ' + eval('(' + m + ')').age); // json字符串时
                }  catch(e) {
                    console.log('err: ' + e + ' data: ' + e.data);
                }
            },
            error: function(xhr, status, error) {
                console.log('xhr.status: ' + xhr.status + ' status: ' + status);
            }
        });
PHP中文网

如果直接知道是json的话可以使用$.getJSON(url,fn);比较方便,直接帮你转换了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号