我的变量是全局变量,但她没有显示相同的结果:
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不保存数据:/
答案 0 :(得分:2)
首先,您的resu
变量不是全局变量。它位于checkLiveRdv
函数范围内的本地。 javascript中的全局变量是在没有var
关键字的情况下声明的。但是,省略全局变量是一种很好的做法。
出现的第一个警告显示一个无价值的未定义resu
。异步$.ajax
稍后完成,当它填充resu
的值时,它会正确显示。
我会让ajax调用异步,就像现在一样。并且只在ajax回调中使用resu
,因为它在其中获取了它的值。
答案 1 :(得分:1)
这是因为您没有等待$.ajax()
来电完成。
如果您需要同步请求,请将sync选项设置为false:
$.ajax({
type: "POST",
async: false,
...
答案 2 :(得分:0)
这是因为在这种情况下$.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);
}
} );