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 select が変更されるたびに #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 に答える