javascript - 我可以在成功回调中评估 $.ajax() 调用的响应类型吗?

标签 javascript jquery ajax

我正在使用 jQuery 向远程端点发出 AJAX 请求。如果出现故障,该端点将返回一个 JSON 对象,并且该对象将描述该故障。如果请求成功,它将返回 HTML 或 XML。

我了解了如何在 jQuery 中定义预期的请求类型作为 $.ajax() 调用的一部分。有没有办法在 success 处理程序中检测请求类型?

$.ajax(
    {
        type: "DELETE",
        url: "/SomeEndpoint",
        //dataType: "html",
        data:
            {
                "Param2": param0val,
                "Param1": param1val
            },
        success: function(data) {
                //data could be JSON or XML/HTML
            },
        error: function(res, textStatus, errorThrown) {
                alert('failed... :(');
            }
    }
);

最佳答案

您的应用程序是否生成正确的内容类型 header (application/json、text/xml 等)并在成功回调中处理这些 header 。也许这样的东西会起作用?

xhr = $.ajax(
    {
        //SNIP
        success: function(data) {
                var ct = xhr.getResponseHeader('Content-Type');
                if (ct == 'application/json') {
                    //deserialize as JSON and continue
                } else if (ct == 'text/xml') {
                    //deserialize as XML and continue
                }
            },
         //SNIP
);

未经测试,但值得一试。

关于javascript - 我可以在成功回调中评估 $.ajax() 调用的响应类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291466/

相关文章:

javascript - 如何从多页应用程序迁移到 Piral

javascript - 允许 JavaScript 正则表达式中的换行符

javascript - 使用 JavaScript 中的变量创建自定义 URL

jQuery 实时功能

php - 如何让Gmail像加载进度条一样

javascript - es6从文件中获取json数据

javascript - 帮助理解 Javascript 不寻常的函数声明语法

javascript - 使用 Jquery 进行箭头键键盘导航

ajax - 浏览器是否使用 CA 为 CORS Ajax 请求验证 SSL key ?

javascript - Sencha Touch - AJAX 不工作