根据JSON结果构建选择选项

时间:2014-07-10 04:04:52

标签: javascript jquery json

我有这个JSON:

{
   "message":"",
   "entities":[
      {
         "city":"1",
         "state":"VE.01",
         "country":"VE",
         "name":"Maroa"
      },
      {
         "city":"2",
         "state":"VE.01",
         "country":"VE",
         "name":"Puerto Ayacucho"
      },
      {
         "city":"3",
         "state":"VE.01",
         "country":"VE",
         "name":"San Fernando de Atabapo"
      }
   ]
}

我需要根据cityname结果构建一个选择选项。我有空的HTML选择:

<select name="city" id="city">
    <option value="-1">Select a city</option>
</select>

而且,也许我错了,但我可以从结果中移出(存储在data.entities javascript var中),如下所示:

$each.(data.entities, function(){
  // here I should build the options
})

但是我不知道从那里去哪里,可以给我一些推动或建议吗?

select#city应该是这样的:

<select name="city" id="city">
    <option value="-1">Select a city</option>
    <option value="1">Maroa</option>
    <option value="2">Puerto Ayacucho</option>
    <option value="3">San Fernando de Atabajo</option>
</select>

在追加新值之前清洁SELECT

所有答案都可以按照我的意愿运行,但请看我的代码:

$(".state").change(function() {
    state = $('.state option:selected').val();
    $.get(Routing.generate('cities') + '/VE/' + state).success(function(data) {
        if (data.message) {
            message = data.message;
        } else {
            $.each(data.entities, function(i, d) {
                $('#city').append('<option value="' + d.city + '">' + d.name + '</option>');
            });
        }
    }).error(function(data, status, headers, config) {
        if (status == '500') {
            message = "No hay conexión con el servidor";
        }
    });
});

我需要清除SELECT但是在添加新值之前保留默认选项<option value="-1">Select one</option>,我是怎么做的?

4 个答案:

答案 0 :(得分:1)

尝试:

$('#city').empty().append('<option value="-1">Select a city</option>');
$.each(data.entities, function(i,d){  
 $('#city').append('<option value="'+d.city+'">'+d.name+'</option>');  
});

Demo

答案 1 :(得分:1)

试试这个:http://jsfiddle.net/K6Lf4/

$.each(data.entities, function(index,option){
  $("#city").append('<option value="'+option.city+'">'+option.name+'</option>');
});

答案 2 :(得分:1)

如果我理解你的问题,我认为这对你有用

options = ''
$.each(data.entities,function(index,value){
    options += '<option value='+value.city+'>'+value.name+'</option>';
});
$('select').append(options)

答案 3 :(得分:1)

试试这个

$.each(data.entities, function (key, val) {

    $("#city").append($("<option>", {value: val.city,text: val.name }));

});

DEMO