jQuery ajax 怎么处理返回的 json 数据?

要是在php返回一个

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

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


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

function F(result , success , xhr)
{
    alert( result.name );   //★★这里是这样调用吗?
}
阅读 9.3k
5 个回答

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

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

clipboard.png

我推荐你看一下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);
            }
        });

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题