0

嗨,我正在使用 jquery 从 mysql 获取数据。它工作得很好,但是当另一个选择框被更改时,我需要它来更新一个选择框。这是我为 jquery 所拥有的:

$("#airports").live('change',function() 
  {
      var selectVal = $('#airports :selected').val();
      alert(selectVal);

    Send a http request with AJAX 

    $.ajax({                                      
      url: 'tras-hotels.php',                         
      data: "n="+selectVal,                                                     
      dataType: 'json',                
      success: function(data)         
      {
         $.each(data, function(key,value){
                   $('#output').append("<option value='"+value.id+"'>"+value.hotel+"</option>");
                });

      } 
    });

  }); 

所以我在这里所做的是每次更改#airports 选择时更新选择框#output。它仅在第一次更改时有效,然后不再执行。但是当我改变时,我确实得到了正确值的警报。这是我的选择框:

<select name="airport" style="width: 220px;" id="airports">
            <option selected="selected">[Escoge Aeropuerto]</option>
            <?php 
            while($tra = mysql_fetch_array($getAirports)){
                echo '<option value="'.$tra['taeropuerto_fklocacion'].'">'.$tra['taeropuerto_nombre'].'</option>';
                } 
            ?>
            </select>
            <label>Hotel</label>
            <select name="hotel" id="output" style="width: 220px;">

            </select>

有谁知道为什么这不起作用?有解决办法吗?预先感谢您的任何帮助。

4

1 回答 1

1

我不确定您为什么使用live- 原始选择有时也会通过 AJAX 替换吗?但是,您可能只需要先清除原始值,因为您只是附加新值。

$("#airports").live('change',function() 
{
    var selectVal = $('#airports :selected').val();
    alert(selectVal);

    var $output = $('#output').html('');

    $.ajax({                                      
      url: 'tras-hotels.php',                         
      data: "n="+selectVal,                                                     
      dataType: 'json',                
      success: function(data)         
      {
         $.each(data, function(key,value) {
              $output.append("<option value='"+value.id+"'>"+value.hotel+"</option>");
         });
      } 
    });

});
于 2012-11-01T05:25:17.550 回答