我在我的函数中返回一个变量时遇到问题,下面的脚本工作正常:
function sessionStatus(){
$(document).ready(function(){
$.getJSON(scriptRoot+"sessionStatus.php",function(status){
alert(status);
});
});
}
sessionStatus();
我敢打赌,当我尝试以下操作时,我会收到一个消息框,其中包含消息“未定义”:
function sessionStatus(){
$(document).ready(function(){
$.getJSON(scriptRoot+"sessionStatus.php",function(status){
return status;
});
});
}
alert(sessionStatus());
这真的很烦我,我似乎看不出我做错了什么。
最佳答案
有两件事你应该知道:
1:JSON 是异步的,所以当 JSON 仍在获取时,对 sessionStatus 的函数调用可能已经完成。以下将起作用:
function sessionStatus(callback){
$(document).ready(function(){
$.getJSON(scriptRoot + "sessionStatus.php", function(status){
callback(status);
});
});
}
sessionStatus(function(s){alert(s);});
或者更确切地说:
function sessionStatus(callback){
$(document).ready(function(){
$.getJSON(scriptRoot + "sessionStatus.php", callback);
});
}
sessionStatus(function(s){alert(s);});
2:即使它是同步的,你也只是从内部函数中给出一个返回值,所以 sessionStatus 什么也不会返回。查看此代码(与您的 JSON 无关):
function do() {
var x = 0;
(function(){
x = 2;
})();
return x;
}
或:
function do() {
var x = (function(){
return 2;
})();
return x;
}
两者都返回 2。希望这能解释一点。
关于javascript函数返回不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732473/