Javascript 函数返回undefine,即使我在返回前检查了变量是否未定义

Javascript 函数返回undefine,即使我在返回前检查了变量是否未定义,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在函数中有一个非常简单的jquery ajax调用,但是我得到了一个非常奇怪的错误。这是一个非常简单的功能 function checkLogin() { $.ajax({ url: "checkLogin.php", success: function(data) { alert(data); //this does print what I want to see return data; //this

我在函数中有一个非常简单的jquery ajax调用,但是我得到了一个非常奇怪的错误。这是一个非常简单的功能

function checkLogin() {
    $.ajax({
        url: "checkLogin.php",
        success: function(data) {
            alert(data); //this does print what I want to see
            return data; //this however returns undefined!
        }
    });
}

//some button onclick
var login_status = checkLogin(); 
alert(login_status); //shows undefined!
这可能会帮助您:

基本上,由于AJAX是异步的,因此将在返回语句之前调用警报

您可以通过切换两个表达式的顺序(或完全删除警报)来修复此问题:

。。。或利用承诺接口:

  $.ajax({
       url : "checkLogin.php",
       success : function(data){
          return data;
          }
    }).then(function() { alert(data); });

ajax
是一种
async
操作和您的
警报(登录状态)
是在ajax完成之前执行的,因此它的行为是正确的。
  $.ajax({
       url : "checkLogin.php",
       success : function(data){
          return data;
          }
    }).then(function() { alert(data); });