我有一个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函数?
谢谢
刚刚发现了如何做:)声明一个变量并从回调函数中进行相应的更新。之后,我可以返回该变量。我将代码放置在将来的读者手中:
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; }