我有以下代码可以向服务器发出请求:
function myAjaxCheck(token) { $.ajax({ type: 'POST', url: 'auth.php', data: { token: token, }, dataType: 'json', success: function (data) { if (data.auth == 'OK') { alert ('ok'); } } else { alert('Error: ' + data.auth); } } }).done(function (data) { return data; }); }
因此,我需要将返回的数据传递给一个像这样的变量:
Var MyVariable = myAjaxCheck(token); console.log(MyVariable);
问题出在哪里,应该在完成后返回数据,但不是。
默认情况下,ajax()请求是异步的,因此ajax()通常会在请求完成之前返回对的调用。您可以改用回调函数。
ajax()
function myAjaxCheck(token, callback) { $.ajax({ type: 'POST', url: 'auth.php', data: { token: token, }, dataType: 'json', success: function (data) { if (data.auth == 'OK') { alert ('ok'); } } else { alert('Error: ' + data.auth); } callback(data); } }); } var myVariable; myAajxCheck(token, function(returnedData){ //anonymous callback function myVariable = returnedData; console.log(myVariable); });
如果绝对必要,则可以async: false在中调用ajax()。
async: false