Javascript 在ajax请求中修改的变量在执行后不可见
我的变量是全局变量,但她不显示相同的结果:Javascript 在ajax请求中修改的变量在执行后不可见,javascript,ajax,variables,jquery,Javascript,Ajax,Variables,Jquery,我的变量是全局变量,但她不显示相同的结果: function checkLiveRdv(salle, jour, dateus, heure) { var resu; var urlaction = myUrl; $.ajax({ type: "POST", dataType: "json", url: urlaction, data: myDatas, success: function(message) {
function checkLiveRdv(salle, jour, dateus, heure)
{
var resu;
var urlaction = myUrl;
$.ajax({
type: "POST",
dataType: "json",
url: urlaction,
data: myDatas,
success: function(message)
{
data = $.parseJSON(message);
if(data['nb']==1)
resu = "ok";
else resu = "pasok";
//this alert display the good result
alert (resu);
}
});
//this alert display 'undefined', why ???
alert(resu);
}
我不知道resu为什么不保留数据:/这是因为在本例中,$.ajax()
是异步的。修改$.ajax()
以包括async:false
:
$.ajax( {
type : 'POST',
dataType: 'json',
url : urlaction,
data : myDatas,
async : false,
success : function(message) {
data = $.parseJSON(message);
if(data['nb']==1)
resu = "ok";
else resu = "pasok";
alert (resu);
}
} );
这是因为在本例中,$.ajax()
是异步的。修改$.ajax()
以包括async:false
:
$.ajax( {
type : 'POST',
dataType: 'json',
url : urlaction,
data : myDatas,
async : false,
success : function(message) {
data = $.parseJSON(message);
if(data['nb']==1)
resu = "ok";
else resu = "pasok";
alert (resu);
}
} );
这是因为您没有等待
$.ajax()
调用完成
如果需要同步请求,请将sync选项设置为false:
$.ajax({
type: "POST",
async: false,
...
这是因为您没有等待
$.ajax()
调用完成
如果需要同步请求,请将sync选项设置为false:
$.ajax({
type: "POST",
async: false,
...
首先,您的
resu
变量不是全局变量。它在checkLiveRdv
函数的作用域内是本地的。javascript中声明的全局变量没有var
关键字。但是,省略全局变量是一种很好的做法
出现的第一个警报显示一个无值的未定义的resu
。异步$.ajax
稍后完成,当它填充resu
的值时,它会正确显示
我会让ajax调用保持现在的异步状态。并且只在ajax回调中使用
resu
,因为它在回调中获取其值。首先,您的resu
变量不是全局变量。它在checkLiveRdv
函数的作用域内是本地的。javascript中声明的全局变量没有var
关键字。但是,省略全局变量是一种很好的做法
出现的第一个警报显示一个无值的未定义的resu
。异步$.ajax
稍后完成,当它填充resu
的值时,它会正确显示
我会让ajax调用保持现在的异步状态。并且只在ajax回调中使用
resu
,因为它在回调中获取其值。您的变量不是真正的全局变量,它是在带有“var”的函数中定义的,因此它是局部(对于函数)变量。您的变量不是真正的全局变量,它是在带有“var”的函数中定义的,因此它是局部(对于函数)变量。