我运行jQuery的版本1.10.X(是的!我有点慢!),并面临着这个奇怪的问题,即doneFilter
与failFilter
内通过.then()
不工作,如果我有一个success
在Ajax调用块。
但是,在我看来,这似乎是我自己的代码库的问题。证明(..也许不是。)?我尝试了一个简单的例子。事情在示例中起作用,并且正如我所期望的那样,success
和doneFilter
已排队并执行。
现在在我的代码库中(与上面的示例绝对相似),.then()
如果我有一个success
奇怪的块,那么该部分将不会执行。删除成功块将启用.then()
并执行doneFilter
/ failFilter
。
奇怪的是,如果使用jQuery-1.7.X,在我的相同代码库中,它们都可以很好地发挥作用。由于ajax框架在1.8及更高版本中所做的更改,这可能会成为问题吗?
如果没有,关于如何找出问题的任何提示?我已经检查了用作doneFilter
和的方法failFilter
。没有语法错误。他们只是一个匿名者。包含控制台语句的函数。
代码 :
function getMonster (){
var theMonster = $.ajax({
url : "http://codepen.io/chriscoyier/pen/difoC.html",
success : function(data){
console.log("Monster Succeeded inside 'success' block");
}
});
return theMonster;
}
var theMonster = getMonster();
theMonster.then (function(){
console.log("Moster Succeeded outside");
}, function(){
console.log("Monster Failed :(");
});
编辑 :
我正在做ajaxSetup
如下。
$.ajaxSetup({
beforeSend: function(jqXHR) {
if ($.cookie("mycookie") == null) {
console.info("Expired Session");
AppModule.timeout();
return false;
}
}
});
编辑2:有没有人以前遇到过这样的问题,或者我是唯一看到怪物失败的人吗?没有引发任何异常,这使得更难发现问题所在。
在花了很多时间进行调试之后,我发现success
在ajax
调用过程中存在逻辑访问问题。我试图访问返回的对象的键,null
并尝试在循环内使用该方法上的方法。
我不确定jQuery是否应该在那里停止执行,因为它允许链接。我之所以找不到解决方案的原因是浏览器控制台没有向我显示任何错误,而是在循环进行该特定迭代之后才停止执行。
我在脑海中问的问题是,.then()
即使成功块在某个时候失败了,jQuery也不应该继续执行回调吗?可能是,可能不是。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句