0

最初にphpページをロードし、次にjava関数を呼び出しますJAVAスクリプトから最初のAJAXリクエストを呼び出し、2番目のphpを呼び出し、いくつかの変数を投稿して関数1を操作します...最初のAJAXリクエストがまだ機能していることを意味します...

MAP API の XML データを生成する 3 番目の php を呼び出す別の AJAX 要求を作成する別の Java スクリプトを呼び出す 2 番目の php の関数は、2 番目の AJAX 要求を意味します..しかし、最初の要求がまだ完了していないため、失敗します.. .どうすればこれを処理できますか? どの AJAX が php を呼び出し、その php が 2 番目の AJAX 要求を呼び出しますか?...

私を助けてください....

あなたの例に従って私の要件を見てください。私のコードは長すぎてスタック形式に従ってここに投稿してフォーマットできないためです

まず、ブラウザに ajax1.php を直接ロードします。

今私は最初のAJAXリクエストを呼び出します

$.ajax('/ajax2.php', function(data2){
// But the ajax2.php having Call another AJAX request for ajax3.php which retrive XML Data genereted from mysql and create Google MAP
    $.ajax('/ajax3.php', function(data3){
       // I need to display the ajax2.php Generated MAP to DIV created by ajax1.php
     // Whene I call ajax2.php directy from browser url it AJAX ajax3.php runs and gerete MAP perfectly
     // But I call ajax2.php through ajax1.php AJAX request it dosen't create the ajax3.php AJAX request 
    });
});

要するに、最初の AJAX 要求を呼び出しますが、最初の AJAX 要求は別の 2 番目の AJAX 要求を呼び出します。MAPを生成します。

document.getElementById("ntfs").innerHTML=xmlhttp.responseText;
// This above code is not working but I write like

document.write(xmlhttp.responseText);
//This above Code works perfect, but it create new document I can't fill to DIV.innerHTML

なんで?これは起こりますか?

4

1 に答える 1

0

いつものように、独自のコードをいくつか投稿すると、支援がはるかに簡単になります。jqueryを使用します。

ajax は非同期であることを理解する必要があります。IDE は、コードの次の行を実行するために ajax 呼び出しが終了するのを待ちません。完了時に ajax1 が ajax2 を呼び出し、完了時に ajax2 が ajax3 を呼び出すようにしたい場合は、ajax テクノロジのfinished:orcomplete:ハンドラを利用する必要があります。jqueryでは、次のようになります...

$.ajax('/ajax1.php', function(data1){
    $.ajax('/ajax2.php', function(data2){
        $.ajax('/ajax3.php', function(data3){
            //All 3 ajax calls are done, in order
        });
    });
});

alert('the first ajax call was made and is probably still executing');

たとえば、ajax1 と ajax2 を同時に実行し、完了時に ajax2 に ajax3 を呼び出させる場合、次のようになります...

$.ajax('/ajax1.php', function(data1){
    //ajax1 call is done
});

$.ajax('/ajax2.php', function(data2){
    //ajax2 is done
    $.ajax('/ajax3.php', function(data3){
        //ajax2 and ajax3 calls are done, in order
    });
});

alert('the first 2 ajax call were made and are probably still executing');

追加資料: 非同期と同期

于 2012-04-04T17:17:13.793 に答える