2011-01-12 70 views
0

使用此功能阿賈克斯再次呼叫

<script type="text/javascript"> 
function ajaxcall(div, page) 
{ 
if (window.XMLHttpRequest) 
    {xmlhttp=new XMLHttpRequest();} 
else 
    { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById(div).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET",page,true); 
xmlhttp.send(); 
} 
</script> 

我用我的阿賈克斯。但在頁面我打電話2倍這個功能:

<script type="text/javascript">ajaxcall("menu", "perfil.php");</script> 
<script type="text/javascript">ajaxcall('mapadiv', "map2.php");</script> 

但發生只有其中一個作品,如果我刪除一個其他作品。什麼即時做錯了?謝謝!

+0

第二次調用ajaxcall()可能會覆蓋第一個調用。嘗試綁定ajaxcall()來點擊一個按鈕。此網址可能有助於https://blueprints.dev.java.net/ajax-faq.html#concurrent_requests – Shahid 2011-01-12 06:12:03

回答

0

嘗試在函數執行開始時聲明「var xmlhttp」。

+0

謝謝,您的方法奏效。我是ajax的begginer,所以我沒那麼擅長。謝謝阿什維尼,邁克爾和沙希德! – Lordareon 2011-01-12 17:46:53

0

它很可能是ajaxcall拋出錯誤並導致執行停止。

通過調試器運行它,找出發生了什麼問題(Firebird,Chrome Developer Tools等)。

0

第一次調用函數ajaxcall創建xmlhttp對象時,當您發送請求時,您調用的是同一個函數,並且該對象已被寫入。這就是隻有一個請求正在工作的原因。爲了避免這種情況,您可能需要將對象存儲在數組中,然後對其進行處理。