Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

return from jquery ajax call

I'm trying to use the return from a jQuery ajax call in my own function, but it keeps returning undefined.

function checkUser2(asdf) {
    $.ajax({
        type: "POST",
        async: false,
        url: "check_user.php",
        data: { name: asdf },
        success: function(data){ 
            return data;
            //alert(data);
        }
    });  
}

$("#check").click(function(){
    alert(checkUser2("muma"));
});

the ajax call definitely works, because when I uncomment my alert I get the correct return, and I can see it in firebug. Am I doing something stupid?

like image 886
michael Avatar asked May 16 '10 18:05

michael


2 Answers

The AJAX call is asynchronous - this means that the AJAX request is made out-of-order of usual program execution, and in your program that means that checkUser2() is not returning data to the alert.

You cannot use return values from $.ajax() calls in this way, instead move the code that utilises the AJAX return data to the success() function - that what it's for.

like image 178
Andy Avatar answered Sep 28 '22 02:09

Andy


You could do this, I think:

function checkUser2(asdf) {
  var s = $.ajax({
        type: "POST",
        async: false,
        url: "check_user.php",
        data: { name: asdf },
        success: function(data){ 
            return data;
            //alert(data);
        }
    }).responseText;  
   return s;
}       

but, as in the 4th example of the jquery doc page for ajax function says, I think that

Blocks the browser while the requests is active. It is better to block user interaction > by other means when synchronization is necessary.

like image 28
eKek0 Avatar answered Sep 28 '22 02:09

eKek0