2012-05-09 9 views
2

私はMySqlデータベースをクエリするPHPによって作成される5つのドロップダウンリストを含むフォームを持っています。リストは正しく構築されています。5ドロップダウンリスト付きAjax

ユーザーはリストから選択し、選択した値に基づいて下部のフォームに入力できるようにします。

1番目のリストを検索します。

ここにリストからコード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から選択すると、何もありません。私が最初にそれらの1つから選択したとしても。私は特定のリスト名と一致するように関数の名前を変更しようと試みただけで、まだ1番目のものだけが動作します。

私には何が欠けていますか?

+2

2番目のリストのhtmlにonchangeの間に間違った二重引用符タグがあるので、ちょうど好奇心から外れますか? '=" showStudent(this.value); ">'は '="でなければなりません。 > ' – ametren

+0

はい、それでした、ありがとう、非常に。私はこのコードを今何時間も読んできました。 ありがとう、新鮮な目はいつも助けてください – Hank

+0

あなたが気にしないなら、私は答えとして再投稿します – ametren

答えて

3

2番目のリストのhtmlにonchangeの二重引用符が間違っていると思います。 =”showStudent(this.value);” >="showStudent(this.value);" >

である必要があります。これらの奇妙なクォートタグは、ワード、アウトルックなどのオフィスアプリケーションからコピー/貼り付けすることがよくあります。見落とすのは簡単です!

関連する問題