2011-05-08 34 views
1

即使我刪除了if語句,以下只有其中一個會一次起作用。爲了讓前者工作,我必須評論後者。這些功能中只有一個功能可以在同一時間工作嗎?

<? 
if(isset($_POST['region'])){ 
echo "<script> showRecords('".$_POST['region']."','region','country') </script>";} 
if(isset($_POST['country'])){ 
echo "<script> showRecords('".$_POST['country']."','country','provice') </script>";} 
?> 

腳本指的是這樣的:

function showRecords(str,column,nextDiv) 
{ 
if (str=="") 
    { 

    document.getElementById(nextDiv).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(nextDiv).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","get"+column+".php?"+column+"="+str,true); 
xmlhttp.send(); 
} 

腳本導致了一個非常簡單的設置的網頁,該列表基於一些$ _GET信息的一些價值。

我只是不明白爲什麼它只允許我一次執行這些腳本之一。我甚至試圖克隆函數showRecords2,它仍然只會做showRecords或showRecords2。

+0

您的XmlHttp請求對象正在發送GET請求,而不是POST – JamesHalsall 2011-05-08 01:35:18

+0

對不起,$ _POST指的是特定於頁面的值。我想要做的是在用戶提交時加載正確的列表,如果他想提交一些稍有不同的信息,他將不得不做出儘可能少的更改。 – 2011-05-08 01:37:20

+0

我的壞,誤讀了 – JamesHalsall 2011-05-08 01:49:57

回答

5

var xmlhttp=new XMLHttpRequest()代替xmlhttp=new XMLHttpRequest()。請注意已添加關鍵字varxmlhttp正在成爲一個全局範圍變量,每次發出請求時都會被新的值/參數/參數覆蓋。第一個仍然在做第二個調用覆蓋它的東西,調用showRecords兩次。

請記住在函數級別中使所有變量避免覆蓋,除非它們實際上將在全局範圍內使用。調試這種類型的問題非常耗時,特別是當您不知道在哪裏找東西時。希望有所幫助!

+0

Wooops,我有一個「省」的錯誤「provice」。它工作完全:) – 2011-05-08 02:14:30

+0

這是一些很好的建議,相信我,我從現在開始要這樣做。 – 2011-05-08 02:16:07

相關問題