小编典典

将回调onSuccess返回值提升为Caller Function返回值

ajax

我有一个javascript函数,该函数调用通用函数对服务器进行ajax调用。我需要从ajax调用的回调函数中检索结果(true /
false),但是我得到的结果始终是’undefined’。

如果没有我的全部逻辑,泛型函数的超级简化版本将是:

function CallServer(urlController) {
    $.ajax({
        type: "POST",
        url: urlController,
        async: false,
        data: $("form").serialize(),
        success:
            function(result) {
                if (someLogic)
                   return true;
                else
                   return false;
            },
        error:
            function(errorThrown) {
                return false;
            }
    });
}

调用它的函数将类似于:

function Next() {
        var result = CallServer("/Signum/TrySave");
        if (result == true) {
            document.forms[0].submit();
        }
    }

“结果”变量始终为“未定义”,并且对其进行调试,我可以看到正在执行回调函数的“返回真”行。

为什么会这样?如何将返回值从回调函数 冒泡 到CallServer函数?

谢谢


阅读 257

收藏
2020-07-26

共1个答案

小编典典

刚刚发现了如何做:)声明一个变量并从回调函数中进行相应的更新。之后,我可以返回该变量。我将代码放置在将来的读者手中:

function CallServer(urlController) {
    var returnValue = false;
    $.ajax({
        type: "POST",
        url: urlController,
        async: false,
        data: $("form").serialize(),
        success:
            function(result) {
                if (someLogic){
                    returnValue = true;
                    return;
                }
            },
        error:
            function(errorThrown) {
                alert("Error occured: " + errorThrown);
            }
        });

        return returnValue;
}
2020-07-26