繁体   English   中英

在异步ajax请求之前运行一个函数

[英]Running a function before async ajax request

我正在尝试在异步ajax请求之前运行一个函数。 但是,在异步请求获得响应后,函数正在运行。

有什么方法可以解决这个问题吗?

block();

ajaxRequest= $.ajax({
    url: siteURL+'includes/ajax/action.php',
    type: "POST",
    async: false,
    data: {productID : productID},
    dataType: "json"
});
ajaxRequest.done(function(data) {
            block(true);
            if (data === false) {
                alerts('error title','error info here', 'error', 200);
                return false;
            }
});
ajaxRequest.fail(function(jqXHR, textStatus) {block(true); alerts('error title','error info','error');});
confirm();

我在这些代码后运行了更多的函数。 但正如我之前所说, block(); 函数正在等待异步ajax请求得到响应。

如果我不运行异步,那么我会同时运行block()confirm()函数,所以return false; 失去了所有的意义。

PS我在提交表单时运行这些代码,因此如果异步请求失败,我不希望它在其后运行任何其他代码。 但是当它异步运行时, block()等待直到返回响应。

你的问题是async:false 您的请求不是异步请求,而是同步请求。 它会阻止javascript代码和浏览器呈现在处理请求时发生。 使用当前的设置,删除async: false,应该没有任何害处async: false,从而使其异步。

block();

ajaxRequest= $.ajax({
    url: siteURL+'includes/ajax/action.php',
    type: "POST",
    data: {productID : productID},
    dataType: "json"
});
ajaxRequest.done(function(data) {
            block(true);
            if (data === false) {
                alerts('error title','error info here', 'error', 200);
                return false;
            }
});
ajaxRequest.fail(function(jqXHR, textStatus) {block(true); alerts('error title','error info','error');});
ajaxRequest.always(confirm);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM