JavaScript 回调函数在我的情况下不起作用
JavaScript callback function is not working in my case
我有一个函数可以 return 一个 AJAX 响应并将其用于另一个函数。这是我的代码:
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
});
alert(usid);
这里是 getExistingId()
的代码
function getExistingId(){
var url = "../../library/functions.php?action=getId";
var uid;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
uid = http.responseText;
if (uid == "No ID"){
callback(0);
} else {
callback(id);
}
}
}
http.open("GET",url,true);
http.send();
}
当我测试代码时,查询或 PHP 代码没有问题,所以我不会在此处包含它,但为什么 usid
总是 return未定义?
仔细看,getEdiistingId() 函数中缺少回调参数。喜欢以下内容:
function getExistingId(callback){
var url = "../../library/functions.php?action=getId";
var uid;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
uid = http.responseText;
if (uid == "No ID"){
callback(0);
} else {
callback(id);
}
}
}
http.open("GET",url,true);
http.send();
}
并将警报放在回调方法中。
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
alert(usid);
});
需要usid
的方法:
function doMyTaskThatNeedUsid(usid)
{
// do something.
}
调用方法如下:
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
// Calling method that need usid.
doMyTaskTaskThatNeedUsid(usid);
});
我有一个函数可以 return 一个 AJAX 响应并将其用于另一个函数。这是我的代码:
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
});
alert(usid);
这里是 getExistingId()
的代码function getExistingId(){
var url = "../../library/functions.php?action=getId";
var uid;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
uid = http.responseText;
if (uid == "No ID"){
callback(0);
} else {
callback(id);
}
}
}
http.open("GET",url,true);
http.send();
}
当我测试代码时,查询或 PHP 代码没有问题,所以我不会在此处包含它,但为什么 usid
总是 return未定义?
仔细看,getEdiistingId() 函数中缺少回调参数。喜欢以下内容:
function getExistingId(callback){
var url = "../../library/functions.php?action=getId";
var uid;
http.onreadystatechange = function(){
if (http.status == 200 && (http.readyState === 4)){
uid = http.responseText;
if (uid == "No ID"){
callback(0);
} else {
callback(id);
}
}
}
http.open("GET",url,true);
http.send();
}
并将警报放在回调方法中。
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
alert(usid);
});
需要usid
的方法:
function doMyTaskThatNeedUsid(usid)
{
// do something.
}
调用方法如下:
function updateLoanApproval(answer){
var password = document.getElementById("password").value;
var usid;
getExistingId(function(success){
if (success === 0){
var usid = "No ID Available";
} else {
var usid = success; //To get the returning value
}
// Calling method that need usid.
doMyTaskTaskThatNeedUsid(usid);
});