2014-02-27 30 views
0

我想在同一頁面上運行多個AJAX調用,似乎有麻煩。我是新手,所以我不太瞭解發生了什麼事。我有一個下拉菜單,我希望它在選擇更改時更新兩個不同位置的內容。這些工作都是獨立的,但是當我嘗試將它們一起運行時,它只會更新我最後運行的任何腳本。任何幫助將不勝感激多個阿賈克斯調用

<script> 
function showUser(str) 
{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","../php/get_org.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 

<script> 
function list(str) 
{ 
if (str=="") 
    { 
    document.getElementById("list").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("list").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","../php/list_org.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 

回答

0

原因很簡單,您使用相同的全局變量兩個請求xmlhttp。 使用var來聲明像這樣的變量var xmlhttp = new XMLHttpRequest();

您的代碼初始化xmlhttp並請求某個頁面。在請求完成之前,您運行另一個函數,它再次使用xmlhttp。它被重新初始化並且新的onreadystatechange處理程序被設置並且發出另一個請求。所以實際上只執行最後一個響應處理程序集。

+0

我嘗試添加,但它仍然不起作用 – yhussain

+0

有4個地方可以添加'var'。你到處添加了嗎?你怎麼稱呼這些功能? –

+0

原來我並沒有向PHP發送正確的變量,所以當AJAX被調用時沒有任何變化,即使AJAX沒有任何問題。謝謝你的幫助! – yhussain