我不知道';我不理解这个javascript函数是如何执行的

我不知道';我不理解这个javascript函数是如何执行的,javascript,jquery,Javascript,Jquery,当我运行以下代码时,警报弹出窗口显示undefined(未定义)。我认为它会返回true或false。请解释一下checkLoginStatus()函数是如何执行的。谢谢 function checkLoginStatus() { $.get("func.php", {op:'login_status', r:Math.random()}, function(data) { if (data == "Yes") { showSalesView(); ret

当我运行以下代码时,警报弹出窗口显示undefined(未定义)。我认为它会返回true或false。请解释一下checkLoginStatus()函数是如何执行的。谢谢

function checkLoginStatus() {
$.get("func.php", {op:'login_status', r:Math.random()}, function(data) {
    if (data == "Yes") {
        showSalesView();
        return true;
    } else {
        loginView();
        return false;
    }   
});
}


有两件事不对

第一,您正在函数中执行异步调用,因此当调用返回时,checkLoginStatus已经返回。基本上是这样的:

function checkLoginStatus() {
    $.get("func.php", {
        op: 'login_status',
        r: Math.random()
    }, function(data) {
        if (data == "Yes") {
            showSalesView();
            return true;
        } else {
            loginView();
            return false;
        }
    });
    // return undefined
}
其次,您将在另一个函数的回调中返回,因此该返回将影响对
$的回调的返回值。get

您想使用回调。所以

function checkLoginStatus(callback) {
    $.get("func.php", {
        op: 'login_status',
        r: Math.random()
    }, function(data) {
        if (data == "Yes") {
            showSalesView();
            callback(true);
        } else {
            loginView();
            callback(false);
        }
    });
}
然后

checkLoginStatus(function(result) {
    alert(result);
});

有两件事不对

第一,您正在函数中执行异步调用,因此当调用返回时,checkLoginStatus已经返回。基本上是这样的:

function checkLoginStatus() {
    $.get("func.php", {
        op: 'login_status',
        r: Math.random()
    }, function(data) {
        if (data == "Yes") {
            showSalesView();
            return true;
        } else {
            loginView();
            return false;
        }
    });
    // return undefined
}
其次,您将在另一个函数的回调中返回,因此该返回将影响对
$的回调的返回值。get

您想使用回调。所以

function checkLoginStatus(callback) {
    $.get("func.php", {
        op: 'login_status',
        r: Math.random()
    }, function(data) {
        if (data == "Yes") {
            showSalesView();
            callback(true);
        } else {
            loginView();
            callback(false);
        }
    });
}
然后

checkLoginStatus(function(result) {
    alert(result);
});

AJAX调用是异步的,因此在响应到达时将执行指定为回调的函数。代码不会等待响应退出
checkLoginStatus
功能

您可以使用回调方法显示结果:

function checkLoginStatus(callback) {
  $.get("func.php", {op:'login_status', r:Math.random()}, function(data) {
    if (data == "Yes") {
      showSalesView();
      callback(true);
    } else {
      loginView();
      callback(false);
    }   
  });
}

checkLoginStatus(function(status){ alert(status); });

AJAX调用是异步的,因此在响应到达时将执行指定为回调的函数。代码不会等待响应退出
checkLoginStatus
功能

您可以使用回调方法显示结果:

function checkLoginStatus(callback) {
  $.get("func.php", {op:'login_status', r:Math.random()}, function(data) {
    if (data == "Yes") {
      showSalesView();
      callback(true);
    } else {
      loginView();
      callback(false);
    }   
  });
}

checkLoginStatus(function(status){ alert(status); });

返回的bool由
$返回。get
函数回调,而不是
checkLoginStatus

function checkLoginStatus() {
    $.get("func.php", {op:'login_status', r:Math.random()}, 

        // Start Callback Function
        function(data) {
            if (data == "Yes") {
                showSalesView();
                return true;
            } else {
                loginView();
                return false;
            } 
        // End Callback Function

    });
}

返回的bool由
$返回。get
函数回调,而不是
checkLoginStatus

function checkLoginStatus() {
    $.get("func.php", {op:'login_status', r:Math.random()}, 

        // Start Callback Function
        function(data) {
            if (data == "Yes") {
                showSalesView();
                return true;
            } else {
                loginView();
                return false;
            } 
        // End Callback Function

    });
}

您看到的是来自.get()函数的未定义(void)返回,
请注意,.get函数调用包含另一个函数作为第三个参数(第一个是url,第二个是anon对象),它是.get函数结果的“回调”,稍后从服务器返回结果时会调用它。

您看到的是.get()返回的未定义(void)参数作用
请注意,.get函数调用包含另一个函数作为第三个参数(第一个是url,第二个是anon对象),即.get函数结果的“回调”,当结果从服务器返回时,将调用此函数。

Programming 101 Callbacks:Programming 101 Callbacks:我几乎在嘲笑自己,需要快速完成应用程序。谢谢你的时间。我几乎在嘲笑我自己,需要快速完成应用程序。谢谢你抽出时间。