выпадающий с php и ajax - PullRequest
       12

выпадающий с php и ajax

0 голосов
/ 26 апреля 2009

В течение некоторого времени я борюсь за решение этой проблемы, но я не прихожу к какому-либо заключению, поэтому подумал, что нужно обратиться за помощью здесь. Проблема в том, что я получаю пустой выпадающий список, вместо этого я должен получить список городов, заполненных из базы данных. Соединение с базой данных в порядке, но я ничего не получаю в раскрывающемся списке.

Вот что я делаю:

    <?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>

Ответы [ 3 ]

1 голос
/ 26 апреля 2009

Мне кажется, проблема в том, что вы выводите теги <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 } ?>

Редактировать: Чтобы уточнить, у вас не было операторов echo до переменных $id и $src. Я добавил htmlspecialchars() как привычку создавать правильно экранированный html.

0 голосов
/ 02 мая 2013
<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>

ИСТОЧНИК

0 голосов
/ 26 апреля 2009

Несколько вещей, чтобы попробовать:

  1. Если вы запросите findcity.php вручную в своем браузере с городом, который, как вы знаете, существует в базе данных, я верну правильный HTML?

  2. Попробуйте с помощью FireBug или другого отладчика JavaScript установить точку останова в функции onreadystatechange и посмотреть, соответствуют ли возвращаемые значения ожидаемым. Установите точку останова в первой строке функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...