[英]Returning from a nested function in 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();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.