javascript - jQuery .then() 和 success block 不能一起工作?

标签 javascript jquery ajax promise

我正在运行 jQuery 版本 1.10.X(是的!我有点慢!)并面临这个奇怪的问题,其中 doneFilterfailFilter 内部传递。如果我在 ajax 调用中有一个 success block ,则 then() 不起作用。

然而,在我看来,这就像我自己的代码库的问题。证明(..或者也许不是..)? I tried a simple example 。示例中的情况正常,正如我所期望的,successdoneFilter 已排队并执行。

现在,在我的代码库中,与上面的示例绝对相似,如果我有一个奇怪的 success block ,则 .then() 部分不会执行。删除 success block 会启用 .then() 并执行 doneFilter/failFilter

奇怪的是,在我的同一个代码库中,如果我有 jQuery - 1.7.X,它们都会运行得很好。这是否是一个问题,因为 ajax 框架在 1.8 及更高版本中发生了变化?

如果没有,有任何关于如何找出问题所在的提示吗?我检查了用作 doneFilterfailFilter 的方法。没有语法错误。他们只是匿名。包含控制台语句的函数。

代码:

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/

相关文章:

Javascript Submit() 未提交表单

javascript - 文件上传点击模拟按钮触发表单

javascript - 如何在 jQuery 中单击时附加元素

javascript - 如何在不单击按钮的情况下打开 Bootstrap 模式?

javascript - 使用 JQuery 将 Json 响应对象转换为字符串

javascript - 如何等待来自主 Vue 实例的 ajax 调用?

javascript - HTML/CSS/JS 不显示幻灯片图片

javascript - API Node.js + Express,请求问题

javascript - 如何控制轮播中视频的暂停/播放?

javascript - Jquery Modal 显示但阻止了该网站