从javascript中的嵌套函数返回

我正在尝试使用jquery的ajax函数来从我的ajax.php文件中获取一些信息。

码:

function ajaxIt(dataLine){ $.ajax({ type: "POST", url: "ajax.php", data: "ajax=true&"+dataLine, success: function(msg){ console.log("[AjaxIt]: "+dataLine+" returned "+msg); return msg; } }); } if(ajaxIt("action=loggedIn")=="1"){ console.log("Logged In"); loggedIn=true; initiate2(); } 

问题是我无法获得成功函数一直返回到ajaxIt函数。 任何人都可以说明我可以做些什么吗?

谢谢。

您需要调用callback函数来处理数据:

 function ajaxIt(dataLine, cb){ $.ajax({ type: "POST", url: "ajax.php", data: "ajax=true&"+dataLine, success: function(msg){ if($.isFunction(cb)) cb.apply(null, [msg]); } }); } ajaxIt("action=loggedIn", function(data){ if(data === "1"){ console.log("Logged In"); loggedIn=true; initiate2(); } }); 

$.ajax是异步的。 这意味着它将立即返回,而不是等待AJAX​​查询执行并从服务器检索结果。 当来自服务器的消息到达时,您的ajaxIt函数已经完成工作。

你应该在这里使用的是一种延续传递方式。 为ajaxIt提供一个延续 :一个函数,解释一旦ajaxIt完成工作应该做什么。

 function ajaxIt(data, continuation) { data.ajax = true; $.post("ajax;php", data, function(msg) { console.log("[AjaxIt]: returned "+msg); continuation(msg); }); } ajaxIt({action:"logged-in"}, function(result) { if (result == "1") { console.log("Logged In"); loggedIn=true; initiate2(); } });