等到jquery ajax请求完成并返回值

Sag*_*gar 4 ajax jquery return-value file-exists

我想等到ajax调用完成并返回值.

function isFileExists(url) {
    var res = false;
    $.ajax({
        type: "GET",
        async: false,
        url: url,
        crossDomain: true,
        dataType: "script",
        success: function () {
            res = true;
        },
        error: function () {
            res = error;
        },
        complete: function () {

        }
    });
    return res; //It is always return false
}
Run Code Online (Sandbox Code Playgroud)

我想返回值"true/error"

请帮我.

Exp*_*lls 10

你不能这样做.这不是ajax的工作方式.您不能依赖于在任何给定时间完成的ajax请求......或者永远不会完成.您需要做的任何基于ajax请求的工作必须在ajax回调中完成.

jQuery使绑定回调变得容易(因为jqXHRjQuery的ajax方法实现了Deferred返回):

var jqXHR = $.ajax({/* snip */});

/* millions of lines of code */

jqXHR.done(function () {
    console.log('true');
}).fail(function () {
    console.log('false');
});
Run Code Online (Sandbox Code Playgroud)

如果设置asyncfalse,则可以执行您想要执行的操作,但在请求运行时会锁定浏览器.不要这样做.那你就是jax.

编辑:你不能结合crossDomain: trueasync: false.跨域必须是异步的.

  • 你的意思是`async`到'false` (3认同)
  • +1.虽然错过了延期或承诺的条款:) (2认同)