我不是前端开发人员,我正在开展一个休闲项目,这需要AJAX获得一块JSON。
$('#btn1').click(function() {
$.ajax({
url: 'http://mywebsite.com/persons/mike',
type: "get",
success: function(response, textStatus, jqXHR){
var age1 = JSON.parse(response).data.age; // works for Firefox
var age2 = response.data.age; // works for Chrome
},
error: function(jqXHR, textStatus, errorThrown){
console.log('Error')
},
complete: function(){
console.log('Complete')
}
});
});
我在Firefox中使用Firebug,在Chrome中使用开发者工具。 response
在Chrome中的类型为Object
,在Firefox中为String
。
是否有通用的方法在jQuery中执行AJAX并成功解析响应?
答案 0 :(得分:7)
在dataType: 'json'
。
$.ajax
这将强制success
/ done
处理程序内的响应成为已解析的对象,否则,如果响应无效JSON,error
/ {{1将调用处理程序。
注意:即使您未在响应中指定fail
标头,使用dataType
也会强制将响应解析为JSON。
如果您指定标题,Content-Type: application/json
的智能猜测会将响应解析为对象,即使您未指定jQuery.ajax
。
因此,您可以使用dataType
中的dataType: 'json'
或从后端输出标题$.ajax
,它可以正常工作。或两者如果你想要贯穿始终。 Content-Type: application/json