2013-08-25 30 views
0

我有数据通过AJAX来页的字符串。在以下格式填充多个选择框单JSON字符串

[{"servername":"svrA"},{"servername":"svrB"},{"servername":"svrC"},{"location":"locA"},{"location":"locB"},{"location":"locC"}] 

我想用数据填充两个选择框。

我试过下面的伪代码的不同变化:

for each item in the json string 
if obj == servername 
    add to selectbox Server 
if obj == location 
    add to selectbox Location 

任何想法,将不胜感激。谢谢。

+0

嗨Trevor3.0,请您上传您已经试过请代码的最后一个版本。 – NicoArbogast

+0

首先,发布您的_actual_码 - 伪不会在所有帮助,和第二,你需要说什么不工作,而不是“任何想法,将不胜感激” – Bojangles

+0

我应该在哪里后呢?只是我目前的问题? –

回答

1
var stuff = [{"servername":"svrA"},{"servername":"svrB"},{"servername":"svrC"},{"location":"locA"},{"location":"locB"},{"location":"locC"}]; 

var elems = { 
    "servername": jQuery('#select-server'), 
    "location": jQuery('#select-location') 
}; 

stuff.forEach(function(item){ 
    for(var selectName in elems){ 
     if(typeof item[selectName] != 'undefined'){ 
      var val = item[selectName]; 
      elems[selectName].append(jQuery('<option/>').val(val).html(val)); 
     } 
    } 
}); 

不是forEach在旧版浏览器上不可用。以上代码仅供您参考。

1

有几种方法可以做到这一点,取决于如何你的代码可能会在未来的演变,一些解决方案可能比别人稍微好一点或者更灵活的,但因为我不具备这样的知识,这里是你如何为例可以在香草JS中做到。

JSFIDDLE

var data = [ 
     {"servername":"svrA"}, 
     {"servername":"svrB"}, 
     {"servername":"svrC"}, 
     {"location":"locA"}, 
     {"location":"locB"}, 
     {"location":"locC"} 
    ], 
    selects = { 
     servername: document.getElementById('servername'), 
     location: document.getElementById('location') 
    }, 
    i = 0, 
    len = data.length, 
    item, prop, val; 

for (; i < len; i++) { 
    prop = 'servername' in (item = data[i])? 'servername' : 'location'; 
    val = item[prop]; 
    selects[prop].add(new Option(val, val), null); 
} 

如果计划具有相同的数据结构,多选择框,而不是硬编码selects对象,引用select元素,你也可以有拉选择id动态使用for in并使用通用方法解析select参考。