2012-04-04 96 views
0

首先我加載PHP頁面然後從JAVA腳本調用第二個PHP和張貼一些變量和操作功能一個... Java函數調用首先AJAX請求是指第一個AJAX請求仍然是工作......AJAX請求

現在在調用其他JAVA腳本,創建另一個AJAX請求其稱之爲第三PHP其生成地圖API XML數據的第二個PHP函數一個...意味着第二AJAX request..but,因爲第一個請求仍然沒有失敗完成...我該如何處理?這AJAX調用PHP和PHP的呼叫第二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請求調用另一個二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 

爲什麼?發生這種事?

回答

0

一如往常,這將是很容易幫助你,如果你貼一些自己的代碼。我將使用jQuery。

你要明白,AJAX是異步的。 IDE不會等待ajax調用完成才能執行下一行代碼。如果你想有ajax1呼叫ajax2當它完成,並ajax2調用ajax3其完成時,你需要利用你的Ajax技術的finished:complete:處理程序。 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'); 

補充閱讀: Asynchronous vs. Synchronous