jQuery.ajaxSetup()被忽略
在JS文件我有这样的:jQuery.ajaxSetup()被忽略
$.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'被用作dataType而不是JSON。这导致我的Web服务调用中断,并且我总是被发送到AJAX调用的错误回调。如果我在实际的Ajax调用中移动设置,则调用将起作用,并从服务器返回数据。出于某种原因,全球环境并未得到尊重。
我的问题是为什么这不工作?我几次使用过这个相同的技术,没有这个问题。
我正在使用jQuery版本1.7.1。
UPDATE
好像这个问题是jQuery的文件的7517行。它正在执行一个IF语句,该语句被假定为false,并跳过了在请求头中设置正确的Content Type。
- 尝试把你的.ajaxSetup文档准备包装内。(不太可能的原因虽然)
- 尝试使用
jQuery.ajaxSetup
代替$.ajaxSetup
-
建议全球事件处理程序不会在ajaxSetup。移动
error:
到$.ajaxError(
代替:jQuery.ajaxError(function (e, jqxhr, settings, exception) { alert(settings.url + " Failed");
});
例子,如果你有一个日志类(一个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: "{}",
是的,这是数据:“{}”'做到了。我在以前的项目中使用过的旧版jQuery中查看了该区域,看起来他们改变了该区域的逻辑,这就是为什么使用空白对象不再有效。 – arb 2012-02-08 13:32:32
你确定你的'$ .ajaxSetup()'调用正在执行吗? – 2012-02-07 21:17:46
这是文件中的第一个呼叫。除非它需要放在.ready()中。 – arb 2012-02-07 21:18:45
虽然不是必需的,但你所有的JS实际上都应该在'.ready()' – KOGI 2012-02-07 21:24:05