gre*_*dit 5 javascript ajax jquery
我有这个代码向我的服务器发出一些请求:
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;
});
}
Run Code Online (Sandbox Code Playgroud)
所以,我需要将返回的数据传递给变量,如:
Var MyVariable = myAjaxCheck(token);
console.log(MyVariable);
Run Code Online (Sandbox Code Playgroud)
问题在哪里,应该在完成后返回数据,但事实并非如此.
默认情况下,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);
});
Run Code Online (Sandbox Code Playgroud)
如果你绝对必须,你可以async: false在通话中使用ajax().