gpt4 book ai didi

javascript - jQuery.ajaxSetup() 被忽略

转载 作者:行者123 更新时间:2023-11-30 18:32:35 27 4
gpt4 key购买 nike

在 JS 文件中我有这个:

$.ajaxSetup({
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {},
error: function (jqXHR, textStatus, errorThrown) {
debugger;
}
});

然后在文件中进一步实例化一个对象,该对象在其构造函数中调用 AJAX 以填充一些值。

function RequestViewModel() {
var self = this;
(...)
// Initalization Methods
$.ajax({
url:ajaxAddress + 'LoadStates',
success: function (data) {
debugger;
}
});
}
var model = new RequestViewModel();

但是,当在代码中进行 ajax 调用时,“xml”被用作数据类型而不是 JSON。这导致我的网络服务调用中断,我总是被发送到 AJAX 调用的错误回调。如果我将设置移动到实际的 AjAX 调用中,则调用有效并且数据从服务器返回。出于某种原因,全局设置未被接受。

我的问题是为什么这不起作用?我已经多次使用相同的技术而没有出现这个问题。

我使用的是 jQuery 1.7.1 版。

更新

问题似乎出在 jQuery 文件的第 7517 行。它正在执行一个 IF 语句,该语句被评估为 false 并跳过在请求 header 中设置正确的内容类型。

最佳答案

  • 尝试将您的 .ajaxSetup 放入文档就绪包装器中。(虽然不太可能是原因)
  • 尝试使用 jQuery.ajaxSetup而不是 $.ajaxSetup
  • 建议不要将全局事件处理程序放在 ajaxSetup 中。移动 error:$.ajaxError(相反:

    jQuery.ajaxError( function (e, jqxhr, settings, exception) {
    alert(settings.url + " Failed");<br/>
    });

例如,如果您有一个带有日志类的 div(如果发生任何错误,请放入一些文本:

$("div.log").ajaxError(function() {
$(this).text( "Triggered ajaxError handler." );
});

注意:重构时,请确保删除最后一个逗号。

此外,如果您使用的是最新版本的 jQuery(目前为 1.7.1),您可以简化:

contentType: "application/json; charset=utf-8",

contentType: "application/json",

编辑:快速、肮脏的全局处理程序:

$(document).ajaxError(function(e, xhr, settings, exception) {
alert('error in: ' + settings.url + ' \\n'+'error:\\n' + exception);
});

EDIT2:一些资源还把空数据集发送为:(带引号)

data: "{}",

关于javascript - jQuery.ajaxSetup() 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9184024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com