javascript - ajax 成功或失败之前调用函数

标签 javascript jquery ajax

我正在使用 $.ajax 发出发布请求。然后,我尝试在 ajax 请求成功或失败之前调用一个函数。现在我的方法如下

var someCallback = function() {
     //do something
};
var Success = false;
$.ajax({
    type: "POST",
    url: "/some/service",
    dataType: "text",
    data: JSON.stringify(someData),
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        someCallBack(); //<--- this is the function
        Success = true;//doesnt goes here
    },
    error: function (textStatus, errorThrown) {
        someCallBack();
        Success = false;//doesnt goes here
    }

});

问题是,我需要在ajax请求完成之后运行someCallBack(),无论它是成功还是失败,但在调用成功或错误回调之前。我不想在这种情况下使用 ajaxStart 和 ajaxStop 。我查看了“完整”回调,但它仅在错误或成功后调用。我不想在两个地方调用 someCallBack() 。如有任何建议,请。

最佳答案

我认为您正在寻找 ajax' deferred接口(interface),其中有 always method 。之后您可以链接您的成功/错误处理程序 - 尽管您不能使用那些进入选项对象的处理程序。

$.ajax({
    type: "POST",
    url: "/some/service",
    dataType: "text",
    data: JSON.stringify(someData),
    contentType: "application/json; charset=utf-8"
})
.always(someCallBack)
.done(function (data) {
    var Success = true; // goes here after someCallBack()
})
.fail(function (textStatus, errorThrown) {
    var Success = false; // goes here after someCallBack()
});

关于javascript - ajax 成功或失败之前调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920920/

相关文章:

javascript - 如何检测浏览器对 pushState 函数的不兼容性

javascript - 刷新 jqGrid 不会保存启用无限滚动的当前页面位置

javascript - Kendo UI 网格不触发传输创建 URL

javascript - 从 ajax jquery post 响应中获取 <h2> 元素内的文本

javascript - 无法使用jquery在html表中添加选择元素

javascript - 通过 Ajax Bootstrap 弹出窗口内容

javascript - Kendo 组合框使用虚拟检索所选项目

javascript - 并排的 jQuery flot 多条形图

jquery - 使用 ('change' jQuery 插件设置选择标签样式时,在 "nice-select"上获取选择标签 .val() 不起作用

javascript - 将本地文件中的 json 数据加载到 React JS 中