等到 Ajax 函数完成

Wait until the Ajax function is done

我已经在网站上搜索了如何等待 ajax 功能完成,我找到了这个解决方案:

function next() {
    $.when(checksign()).done(function () {
        if (uf == 1) {
            $("#usrdiv").css("display", "none");
            $("#pswdiv").css("display", "inline");
        }
    });
}

function checksign() {
    $.ajax({
        url: "checkuser.php",
        data: {
            user: u
        },
        method: "POST"
    }).done(...);
}

但它仍然没有工作,它不等待 ajax 完成而是直接执行 done()

中的函数

那是因为 checksign 没有 return 您需要链接在 done 函数上的承诺。

您也不需要 $.when 一个承诺的包装器

function next() {
    checksign().done(function(data) {
        if (uf == 1) {
            $("#usrdiv").css("display", "none");
            $("#pswdiv").css("display", "inline");
        }
    });
}

function checksign() {
    return $.ajax({
        url: "checkuser.php",
        data: {
            user: u
        },
        method: "POST"
    }).done(...);
}