-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 を返しましたが、fileexists in alert show 0 なぜ ?!!!

4

1 に答える 1

2

AJAX は、定義上、非同期です。その POST 要求を送信すると、要求内のコード (コールバック関数) が応答を待機している間、直後のコードが実行され続けます。これが意味することは、次の 2 つのシナリオが機能的に (まあ、観察可能に) 同一 (一種) であるということです。

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 に答える