2012-05-09 185 views
2

我有一個表單,其中包含5個下拉列表,它是由PHP查詢MySql數據庫創建的。列表正在正確構建。阿賈克斯與5下拉列表

我希望用戶能夠從列表中進行選擇,並根據所選值在底部填寫表格。

它適用於第一個列表。

下面是從列表1

<td width="90"> 
<p><select size="1" name="D1" onchange="showStudent(this.value);"> 
<?php while(list($id, $student_id)=mysql_fetch_row($result1)) { 
echo " 
<option value=\"".$student_id."\">".$student_id."</option>"; 
} 
?> 
</select></p> 
</td> 

這裏代碼的代碼從清單2

<td> 
<p><select size="1" name="D2" onchange=」showStudent(this.value);」 > 
<?php while(list($id, $student_id)=mysql_fetch_row($result2)) { 
echo " 
<option value=\"".$student_id."\">".$student_id."</option>"; 
} 
?> 
</select></p> 
</td> 

這裏的javascript代碼

<script type="text/javascript"> 
function CreateXmlHttpObject() { //function to return the xml http object 
    var xmlhttp=false; 
    try{ 
     xmlhttp=new XMLHttpRequest();//creates a new ajax object 
    } 
    catch(e) {  
     try{    
      xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");//this is for IE browser 
     } 
     catch(e){ 
      try{ 
      req = new ActiveXObject("Msxml2.XMLHTTP");//this is for IE browser 
      } 
      catch(e1){ 
       xmlhttp=false;//error creating object 
      } 
     } 
    } 

    return xmlhttp; 
} 

function showStudent(str) 
{ 
// alert("Made it to show students"+ str); 
if (str=="") 
{ 
document.getElementById("student_data").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("student_data").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET","editstudent.php?d="+str,true); 
xmlhttp.send(); 
} 

</script> 

如果我從第一個列表中選擇,應有盡有按原樣工作。但是,如果我從列表2-5中選擇,則什麼也不是。即使我先從其中一箇中選擇。我甚至試着改變函數的名字來匹配一個特定的列表名稱,但仍然只有第一個工作。

我錯過了什麼?

+2

只是出於好奇,是否可能是因爲你在第二個列表的html中的onchange上有錯誤的雙引號標籤? '=「showStudent(this.value);」>'應該是'=「showStudent(this.value);」 >' – ametren

+0

是的,就是這樣,非常非常感謝你。我一直在閱讀這段代碼幾個小時。 再次感謝你,新鮮的眼睛總是幫助 – Hank

+0

如果你不介意,我會重新發布,作爲一個答案 – ametren

回答

3

我相信這是因爲你在第二個列表的html中的onchange上有錯誤的雙引號標籤? =」showStudent(this.value);」 >應該是="showStudent(this.value);" >

這些奇怪的報價標籤通常來自word,outlook或其他辦公應用程序的複製/粘貼。他們很容易忽略!