2009-04-26 10 views
0

私はこの問題を解決するために戦っていますが、私はここでいくつかの助けを求めると思った結論には至りません。 問題は、代わりに空のドロップダウンが表示されます。代わりに、データベースから都市のリストを取得する必要があります。データベース接続は正常ですが、私はドロップダウンで何も得られません。phpとajaxでドロップダウン

これは私がやっているものです:

<?php 

require 'includes/connect.php'; - database connection 
$country=$_REQUEST['country']; - get from form (index.php) 
$q = "SELECT city FROM city where countryid=".$country;  
$result = $mysqli->query($q) or die(mysqli_error($mysqli));  
if ($result) { 
?> 
    <select name="city"> 
    <option>Select City</option> 
    $id = 0; 
    <?php while ($row = $result->fetch_object()) { 
     $src = $row->city; 
     $id = $id + 1;  
    ?>  
    <option value= <?php $id ?> > <?php $src ?></option> 
<?php } ?> 
</select> 
<?php } ?> 

Ajaxのスクリプトはこれです:

<script> 
    function getXMLHTTP() { //function to return the xml http object 
      var xmlhttp=false; 
      try{mlhttp=new XMLHttpRequest();} 
      catch(e) {  
    try{ xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); } 
    catch(e){ try{ 
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
        } 
        catch(e1){ 
         xmlhttp=false; 
        } 
       } 
      } 

      return xmlhttp; 
     } 


     function getCity(strURL) {   
      var req = getXMLHTTP();   
      if (req) {    
       req.onreadystatechange = function() { 
        if (req.readyState == 4) {      
         if (req.status == 200) {       
          document.getElementById('citydiv').innerHTML=req.responseText; 

         } else { 
          alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
         } 
        }    
       }   
       req.open("GET", strURL, true); 

       req.send(null); 

      } 

     } 
    </script> 

これは私のフォームコードです:

<form method="post" action="" name="form1"> 
<table width="60%" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td width="150">Country</td> 
    <td width="150"><select name="country" onChange="getCity('findcity.php?country='+this.value)"> 
    <option value="">Select Country</option> 
    <option value="1">New Zealand</option> 
    <option value="2">Canada</option> 
     </select></td> 
    </tr> 
    <tr style=""> 
    <td>City</td> 
    <td ><div id="citydiv"><select name="city"> 
    <option>Select City</option> 
     </select></div></td> 
    </tr> 

</table> 
</form> 

答えて

1

私は問題が<option>タグを出力している場所だと思います。

<select>タグの間にこのコードブロックを使用してください。

<option>Select City</option> 
    <?php 
     $id = 0; 
     while ($row = $result->fetch_object()) { 
     $src = $row->city; 
     $id = $id + 1;  
    ?>   
    <option value="<?php echo htmlspecialchars($id,ENT_QUOTES) ?>"><?php echo htmlspecialchars($src) ?></option> 
<?php } ?> 

編集:明確にするために、あなたはどの$idecho文と$src変数を持っていませんでした。私は適切にエスケープされたhtmlを生成する習慣としてhtmlspecialchars()を追加しました。

0

しようとするいくつかのこと:

  1. あなたが知っている都市がデータベースに存在するブラウザでfindcity.phpを手動で要求すると、正しいHTMLが返されますか?

  2. onreadystatechange関数でブレークポイントを設定し、返された値が期待どおりであるかどうかを確認するには、FireBugまたは別のjavascriptデバッガを試してください。関数の最初の行にブレークポイントを設定します。

0
<input name="acname" type="text" id="acname" value="" maxlength="9"> 
Account Name </p> 

<select name="src"> 
    <option value="number"> :::: Select ::::</option> 
    <option value="did">DID</option> 
    <option value="tfn">TFN</option> 
</select> 
<span id="errmsg"></span> DID/TFN </p> 

<select name="did" onchange='OnChange(this.form1.did);' > 
    <option value=""> :::: Select ::::</option> 
    <? $qry1 = mysql_query("SELECT * FROM ".NUMBERS." where Flag='1'") or die(mysql_error()) ; 
    while($res1 = mysql_fetch_array($qry1)) { ?> 
    <option value="<?=$res1['Numbers'] ?>"><?=$res1["Numbers"]?></option> 
     <? } ?> 
</select> 

SOURCE