帮我解决这段代码
var fileexists=0;
var name="sample.txt";
$.post("aaa.php?do=checkfileexists",{filename:name},function(data) {
if ((data == "0000") || (data == "0000")) // file not exist .
{
fileexists=0;
}
if ((data == "1111") || (data == "1111")) // file exist .
{
fileexists=1; // file exits .
}
});
alert(fileexists);
数据返回1111但文件存在于alert show 0为什么?!!!
答案 0 :(得分:2)
根据定义,AJAX是异步的。当您发送该POST请求时,紧接着的代码将继续执行,而请求中的代码(回调函数)等待响应。这意味着以下两个场景在功能上(好的,可观察的)相同(有点):
var fileexists=0;
$.post("aaa.php?do=checkfileexists",{filename:name},function(data) {
// some code
});
alert(fileexists);
和
var fileexists=0;
alert(fileexists);
$.post("aaa.php?do=checkfileexists",{filename:name},function(data) {
// some code
});
所以正在发生的事情是,您在设置alert(fileexists)
后几乎立即呼叫var fileexists=0
,而不是等待实际响应。为了提醒响应,您必须在收到响应之后在回调函数中调用alert()
:
var fileexists = 0;
var name = "sample.txt";
$.post("aaa.php?do=checkfileexists",{filename:name},function(data) {
if (data == "0000") {
fileexists = 0;
}
if (data == "1111") {
fileexists = 1;
}
alert(fileexists);
});