Another quick one. Reading around it seems to be an issue. You make an AJAX call within a function and you want the call to be synchronous so that you can use the data from the call in the function scope.
AJAX calls are obviously asynchronous. jQuery has a ‘async: false’ option in AJAX calls but it is ignored by most (maybe all?) browsers. Using this method you can force a synchronous request and retrieve that data.
1 2 3 4 5 6 7 8 9 | function myFunction() { var myVariable = $.ajax( { url: 'someScript.php', async: false }).responseText; alert(myVariable); } |
So .responseText retrieves the text value of the response from the AJAX call. And because we’re assigning to a variable we are forcing a synchronous request. You can now use that variable as you see fit.
This causes an issue when you are trying to retrieve a JSON object from an AJAX call into the function scope. The best way I’ve found so far is to retrieve the JSON as a string and use a jquery JSON plugin to convert it into an accessible object. Or you could just use the ‘eval’ method.
Stephen.
#1 by JNat on 8 February, 2010 - 7:56 pm
Quote
Thanks for this, worked great. async=false only seems to work in FF. Your solution seems to work cross-browser.