我正在运行 jQuery 版本 1.10.X(是的!我有点慢!)并面临这个奇怪的问题,其中 doneFilter
和 failFilter
在 内部传递。如果我在 ajax 调用中有一个
不起作用。success
block ,则 then()
然而,在我看来,这就像我自己的代码库的问题。证明(..或者也许不是..)? I tried a simple example 。示例中的情况正常,正如我所期望的,success
和 doneFilter
已排队并执行。
现在,在我的代码库中,与上面的示例绝对相似,如果我有一个奇怪的 success
block ,则 .then()
部分不会执行。删除 success block 会启用 .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: 以前有没有人遇到过这样的问题,还是我是唯一一个看到怪物失败的人?没有抛出任何异常,这使得找出问题所在变得更加困难。
最佳答案
您可以尝试使用完成/失败,只是为了确保它正常工作:
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.done(function(){
console.log("Moster Succeeded outside");
})
.fail(function(){
console.log("Monster Failed :(");
});
并添加“true”:
$.ajaxSetup({
beforeSend: function(jqXHR) {
if ($.cookie("mycookie") == null) {
console.info("Expired Session");
AppModule.timeout();
return (false);
}
return (true);
}
});
关于javascript - jQuery .then() 和 success block 不能一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361486/