我有一个小问题,我想检查用户是否通过AJAX POST登录到PHP然后运行其余功能,遗憾的是其余的功能正在运行而不等待AJAX完成..这是个坏消息
function checkLogin() {
dat = 'chl=1&x='+Math.random();
$.ajax({
url: "/action.php",
type: "POST",
data: dat,
success: function(data) {
if (data)
return data;
return 0;
},
error: function(data) {
console.log('err'+data);
return;
}
});
}
function anotherFunction() {
logged = checkLogin(); // is the user logged in?
if (logged) {
// do other stuff
console.log('Logged in');
} else {
console.log('Not logged in..');
}
}
所以这是我的问题,它说记录是未定义的。除了使用setTimeout之外,有没有任何解决方案,在等待时间方面更“自然”?
答案 0 :(得分:2)
AJAX是异步的 - 在success:
代码中执行。
答案 1 :(得分:-2)
通过添加async参数使其成为同步请求,并将其设置为false [不推荐]
$.ajax({
url: "/action.php",
type: "POST",
data: dat,
asynch: false,
success: function(data) {
if (data)
return data;
return 0;
},
error: function(data) {
console.log('err'+data);
return;
}
[推荐]调用您想要的方法成功回调Ajax调用
$.ajax({
url: "/action.php",
type: "POST",
data: dat,
success: function(data) {
if (data)
return data;
yourDesiredFunctionHere();
return 0;
},
error: function(data) {
console.log('err'+data);
return;
}