发布数据返回true,但是警报显示错误结果:为什么?

时间:2013-09-26 12:25:05

标签: php jquery post

帮我解决这段代码


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为什么?!!!

1 个答案:

答案 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);
});