我不是前端开发人员,我正在做一个临时项目,需要 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 并成功解析响应?
最佳答案
设置dataType: 'json'
在你的$.ajax
.
这将强制在 success
内进行响应/done
处理程序是一个已经解析的对象,否则,如果响应不是有效的 JSON,error
/fail
处理程序将被调用。
注意:使用dataType
即使您没有指定 Content-Type: application/json
也会强制将响应解析为 JSON响应中的 header 。
如果您指定 header ,jQuery.ajax
即使您没有指定 dataType
的智能猜测也会将响应解析为对象。 .
因此,您可以使用 dataType: 'json'
在$.ajax
或输出标题Content-Type: application/json
从后端,它会正常工作。或者如果你想全程都可以。 =]
关于javascript - jquery ajax响应: difference between Chrome and Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14887497/