如何使用JSON数据填充选择框的选项?

Piz*_*bol 48 html javascript jquery json

我需要根据选择国家来喂养城市.我是以编程方式完成的,但不知道如何将JSON数据放入选择框.我尝试了几种使用jQuery的方法,但没有一种方法可行.

我得到的回复(如果需要,我可以格式化这个):

["<option value='Woodland Hills'>Woodland Hills<\/option>","<option value='none'>none<\/option>","<option value='Los Angeles'>Los Angeles<\/option>","<option value='Laguna Hills'>Laguna Hills<\/option>"]
Run Code Online (Sandbox Code Playgroud)

但是,如何将此数据作为选项放在HTML <select></select>标记中?

我试过的代码:

<form action="" method="post">
<input id="city" name="city" type="text" onkeyup="getResults(this.value)"/>
<input type="text" id="result" value=""/>
<select id="myselect" name="myselect" ><option selected="selected">blank</option></select>
</form>
</div>

<script>
function getResults(str) {
  $.ajax({
        url:'suggest.html',
        type:'POST',
        data: 'q=' + str,
        dataType: 'json',
        success: function( json ) {
            $('#myselect').append(json);

        }
    });
};

$( '.suggest' ).keyup( function() {
   getResults( $( this ).val() );
} );
</script>
Run Code Online (Sandbox Code Playgroud)

我也尝试使用本教程自动填充使用jQuery和AJAX的选择框,但除了用"UNDEFINED"填充我的选择之外我从未做过任何事情,即使我得到了教程建议的格式的响应.

<script type="text/javascript" charset="utf-8">
$(function(){
  $("select#city").change(function(){
    $.getJSON("/select.php",{id: $(this).val(), ajax: 'true'}, function(j){
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
      }
      $("select#myselect").html(options);
    })
  })
})
</script>
Run Code Online (Sandbox Code Playgroud)

Sam*_*war 98

为什么不让服务器返回名称?

["Woodland Hills", "none", "Los Angeles", "Laguna Hills"]
Run Code Online (Sandbox Code Playgroud)

然后<option>使用JavaScript 创建元素.

$.ajax({
    url:'suggest.html',
    type:'POST',
    data: 'q=' + str,
    dataType: 'json',
    success: function( json ) {
        $.each(json, function(i, value) {
            $('#myselect').append($('<option>').text(value).attr('value', value));
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @Pidzabol:$('#mySelect').empty(); 也清除. (14认同)
  • @丹尼斯:您可以添加`selected`属性。对于jQuery,我相信您使用`.prop('selected',true)`。 (2认同)

zeu*_*stl 25

鉴于您从://site.com返回的json:

[{text:"Text1", val:"Value1"},
{text:"Text2", val:"Value2"},
{text:"Text3", val:"Value3"}]
Run Code Online (Sandbox Code Playgroud)

用这个:

    $.getJSON("your://site.com", function(json){
            $('#select').empty();
            $('#select').append($('<option>').text("Select"));
            $.each(json, function(i, obj){
                    $('#select').append($('<option>').text(obj.text).attr('value', obj.val));
            });
    });
Run Code Online (Sandbox Code Playgroud)


Edg*_*ado 17

你应该这样做:

function getResults(str) {
  $.ajax({
        url:'suggest.html',
        type:'POST',
        data: 'q=' + str,
        dataType: 'json',
        success: function( json ) {
           $.each(json, function(i, optionHtml){
              $('#myselect').append(optionHtml);
           });
        }
    });
};
Run Code Online (Sandbox Code Playgroud)

干杯