要是在php返回一个
echo { name:"yxl", age:4};
在jQuery处理的时候,怎么写呢?
是下面这样写吗?
$.get('.php',{:''},F ,'json'); //★★这里我直接写'json' 对吗?
function F(result , success , xhr)
{
alert( result.name ); //★★这里是这样调用吗?
}
要是在php返回一个
echo { name:"yxl", age:4};
在jQuery处理的时候,怎么写呢?
是下面这样写吗?
$.get('.php',{:''},F ,'json'); //★★这里我直接写'json' 对吗?
function F(result , success , xhr)
{
alert( result.name ); //★★这里是这样调用吗?
}
jquery的ajax回调函数的返回值时有规律的:
我推荐你看一下JavaScript权威指南第19章第6节:jquery中的ajax。
虽然书上面说的jquery版本有点老(1.3)。但是ajax那块的原理说的还是比较透彻的。
如果返回的是json对象的话,是可以result.name。如果返回的是json字符串的话,需要转化成json对象来操作。
转化方式,有三种第一,eval(不推荐),第二,jquery的parseJSON(建议),第三,JSON.parse(推荐)
代码如下:
$.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);
}
});
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
后端返回的是一个json字符串,而不是对象。使用JavaScript原生的JSON.parse方法把json字符串解析为对象,就可以用了。