JavaScript运行时无需等待AJAX​​请求完成

时间:2014-07-01 18:46:59

标签: 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: 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之外,有没有任何解决方案,在等待时间方面更“自然”?

2 个答案:

答案 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;
    }