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

标签 javascript jquery html 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>"]

但是我怎样才能将这些数据作为选项放入 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>

我也试过用这个tutorial on auto-populating select boxes using jQuery and AJAX ,但这从来没有做任何事情,除了用“未定义”为我的选择填充我的选择,即使我得到了教程建议格式的响应。

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

最佳答案

为什么不直接让服务器返回名字呢?

["Woodland Hills", "none", "Los Angeles", "Laguna Hills"]

然后创建 <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));
        });
    }
});

关于javascript - 如何使用 JSON 数据填充选择框的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918144/

相关文章:

javascript - 网站上的 Google 翻译菜单无法在 iPad 上使用

javascript - 提升浏览器的 javascript 权限?

jquery - 事件 onclick 更改背景图片

Javascript 从弹出输入单选类中获取值

html - 将 flex 元素定位到 flex 容器的底部

javascript - WebGL Earth 在当前位置重启动画

javascript - 如何反转按位移位?

javascript - 我有一个从 HTML 页面接受值的 JS 文件。我必须在嵌入 JS 的 CSS 中使用这个变量

jquery - 验证子集合动态添加的输入元素

jquery - val() 不抓取当前输入值