2

我不是前端开发人员,我正在做一个休闲项目,这需要 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 中使用开发者工具。是Chrome中的response类型,在 Firefox 中是 a。ObjectString

有没有一种通用的方法在 jQuery 中执行 AJAX 并成功解析响应?

4

1 回答 1

7

设置dataType: 'json'在您的$.ajax.

这将强制success/done处理程序中的响应成为已解析的对象,否则,如果响应不是有效的 JSON,则error/fail处理程序将被调用。

注意:dataType即使您没有Content-Type: application/json在响应中指定标头,使用也会强制将响应解析为 JSON。

但是,如果您指定标头,jQuery.ajax即使您没有指定dataType.

因此,您可以使用dataType: 'json'in$.ajaxContent-Type: application/json从后端输出标头,它会正常工作。或者两者兼而有之,如果你想贯穿始终。=]

于 2013-02-15T02:32:08.403 回答