jQuery return ajax result into outside variable jQuery return ajax result into outside variable ajax ajax

jQuery return ajax result into outside variable


You are missing a comma after

'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' }

Also, if you want return_first to hold the result of your anonymous function, you need to make a function call:

var return_first = function () {    var tmp = null;    $.ajax({        'async': false,        'type': "POST",        'global': false,        'dataType': 'html',        'url': "ajax.php?first",        'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' },        'success': function (data) {            tmp = data;        }    });    return tmp;}();

Note () at the end.


This is all you need to do:

var myVariable;$.ajax({    'async': false,    'type': "POST",    'global': false,    'dataType': 'html',    'url': "ajax.php?first",    'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' },    'success': function (data) {        myVariable = data;    }});

NOTE: Use of "async" has been depreciated. See https://xhr.spec.whatwg.org/.


Using 'async': false to prevent asynchronous code is a bad practice,

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. https://xhr.spec.whatwg.org/

On the surface setting async to false fixes a lot of issues because, as the other answers show, you get your data into a variable. However, while waiting for the post data to return (which in some cases could take a few seconds because of database calls, slow connections, etc.) the rest of your Javascript functionality (like triggered events, Javascript handled buttons, JQuery transitions (like accordion, or autocomplete (JQuery UI)) will not be able to occur while the response is pending (which is really bad if the response never comes back as your site is now essentially frozen).

Try this instead,

var return_first;function callback(response) {  return_first = response;  //use return_first variable here}$.ajax({  'type': "POST",  'global': false,  'dataType': 'html',  'url': "ajax.php?first",  'data': { 'request': "", 'target': arrange_url, 'method': method_target },  'success': function(data){       callback(data);  },});