我有这个功能
function get_last(){
$.ajax({
url:'fronta.php?get_last&last=1',
success:function(data) {
var last = parseInt(data);
}
});
return last;
}
但当我称之为
时var last = get_last();
alert(last);
萤火虫给我“最后没有定义”
如何将最后一个变量传递到全局范围?
答案 0 :(得分:3)
首先,你是异步调用AJAX所以不要指望你可以从ajax响应中获取值并返回它。
第二件事是var last在成功处理程序的范围中定义,所以为了访问任何变量,应该在适当的范围内定义它。
如果您愿意,可以同步调用ajax以获取响应并将其返回。
function get_last(){
var last = null;
$.ajax({
url:'fronta.php?get_last&last=1',.
success:function(data) {
last = parseInt(data);
},
async: false
});
return last;
}
答案 1 :(得分:2)
function get_last(){
var last;
$.ajax({
url:'fronta.php?get_last&last=1',
async: false,
success:function(data) {
last = parseInt(data);
}
});
return last;
}
将last
变量的声明移动到父函数,而不是将其放在回调中。在JavaScript中,内部函数可以访问在其父级中声明的变量,因此last = parseInt(data);
将更新父函数中声明的变量。
另请注意,您必须同步运行此函数,否则函数将在处理响应之前返回。
此外,在您撰写问题时可能是一个拼写错误,但在.
行的末尾有一个随机的url:'fronta...
字符。你需要摆脱它。