javascript - jquery ajax响应: difference between Chrome and Firefox

标签 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 并成功解析响应?

最佳答案

设置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/

相关文章:

javascript - 使用 javascript 生成 GeoJson

javascript - 我可以让 jQuery 指向 XML 文档而不是 DOM 吗?

javascript - 如何专注于javascript对话框 'OK'按钮

javascript - 将 Actionscript 转换为 HTML5

javascript - 带有 Ajax 和 PHP 的 Jquery 不工作

jquery - 将鼠标悬停在可转换对象上时,如何有条件地取消转换?

javascript - 在鼠标悬停事件上触发 Bootstrap 折叠功能

javascript - 有没有办法在传单 map 上编辑现有的geojson数据

javascript - 是否可以通过某些调试器(如 WebKit、FireBug 或 IE8 开发人员工具)来调试动态加载 JavaScript?

javascript - Rails 应用程序发送 HTML 响应而不是 JS