Returning From A Nested Function In Javascript
I'm trying to make a function that uses jquery's ajaxfunction to get some info from my ajax.php file. code: function ajaxIt(dataLine){ $.ajax({ type: 'POST', ur
Solution 1:
You need to invoke a callback
function to process data that way:
functionajaxIt(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();
}
});
Solution 2:
$.ajax
is asynchronous. This means that it will return right away, instead of waiting for the AJAX query to execute and retrieve a result from the server. By the time the message from the server arrives, your ajaxIt
function has already finished working.
What you should use here is a continuation-passing style. Provide ajaxIt
with a continuation: a function that explains what should be done once ajaxIt
has finished working.
functionajaxIt(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();
}
});
Post a Comment for "Returning From A Nested Function In Javascript"