【发布时间】:2014-12-11 21:07:14
【问题描述】:
我正在运行 jQuery 版本 1.10.X(是的!我有点慢!)并面临这个奇怪的问题,如果我有一个 success 块,doneFilter 和 failFilter 在 .then() 内部传递就不起作用在 ajax 调用中。
然而,这在我看来像是我自己的代码库的问题。证明(..或者可能不是..)? I tried a simple example。示例中的一切正常,正如我所料,success 和 doneFilter 已排队并执行。
现在在我的代码库中,与上面的示例完全相似,如果我有一个奇怪的 success 块,.then() 部分不会执行。删除成功块启用 .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: 以前有没有人遇到过这样的问题,或者我是唯一一个看到怪物失败的人?没有抛出一个异常,这使得找出问题所在变得更加困难。
【问题讨论】:
-
你有什么奇怪的
$.ajaxSetup()吗? -
适用于任何提及的版本:jsfiddle.net/wfc5bqsx
-
不确定您的代码库有多大,但您是否尝试通过省略其他模块来解决问题,以便获得一个最小的示例?
-
我正在做一个
ajaxSetup但我不认为有什么问题。 - ` $.ajaxSetup({ beforeSend: function(jqXHR) { if ($.cookie("mycookie") == null) { console.info("会话已过期。调用超时.."); App.timeout() ; 返回 false; } } });` -
而且,我试图单独执行它,但没有运气! :(
标签: javascript jquery ajax promise