jquery ajax响应:Chrome和Firefox之间的区别

时间:2013-02-15 02:29:38

标签: javascript ajax jquery

我不是前端开发人员,我正在开展一个休闲项目,这需要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并成功解析响应?

1 个答案:

答案 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