JavaScript在不等待AJAX请求完成的情况下运行
我有一个小问题,我想检查用户是否通过AJAX POST登录到PHP,然后运行函数的其余部分,不幸的是,函数的其余部分在运行时没有等待AJAX完成。。这是个坏消息JavaScript在不等待AJAX请求完成的情况下运行,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个小问题,我想检查用户是否通过AJAX POST登录到PHP,然后运行函数的其余部分,不幸的是,函数的其余部分在运行时没有等待AJAX完成。。这是个坏消息 function checkLogin() { dat = 'chl=1&x='+Math.random(); $.ajax({ url: "/action.php", type: "POST", data: dat, success: functi
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,还有什么更自然的等待时间解决方案吗?AJAX是异步的,请在success:code中执行它。通过添加asynch参数使其成为同步请求,并将其设置为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;
}
我建议将if日志逻辑放入AJAX success callback.asynch?这不是你要找的参数。将其设置为该值也是一个坏主意,请重新考虑代码。@rlemoon,edited,thanksasync仍然不是属性名称;另外,yourDesiredFunctionHere函数位于return语句之后,因此不会命中。