-5

帮我解决这个代码


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 但文件存在于警报显示 0 为什么?!!!

4

1 回答 1

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);
});
于 2013-09-26T12:40:33.700 回答