Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用单个json字符串填充多个选择框_Javascript_Json - Fatal编程技术网

Javascript 使用单个json字符串填充多个选择框

Javascript 使用单个json字符串填充多个选择框,javascript,json,Javascript,Json,我通过ajax将字符串数据发送到页面。按以下格式 [{"servername":"svrA"},{"servername":"svrB"},{"servername":"svrC"},{"location":"locA"},{"location":"locB"},{"location":"locC"}] 我想用数据填充两个选择框 我尝试了以下伪代码的不同变体: for each item in the json string if obj == servername add to sel

我通过ajax将字符串数据发送到页面。按以下格式

[{"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
任何想法都将不胜感激。谢谢。

var stuff=[{“服务器名”:“svrA”},{“服务器名”:“svrB”},{“服务器名”:“svrC”},{“位置”:“locA”},{“位置”:“locB”},{“位置”:“locC”}];
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));
        }
    }
});
变量元素={ “服务器名”:jQuery(“#选择服务器”), “位置”:jQuery(“#选择位置”) }; stuff.forEach(功能(项目){ for(元素中的变量selectName){ 如果(项目类型[selectName]!=“未定义”){ var val=项目[选择名称]; elems[selectName].append(jQuery(“”).val(val).html(val)); } } });

并不是说,
forEach
在较旧的浏览器上不可用。上面的代码只是供您使用的一个示例。

有几种方法可以做到这一点,根据您的代码将来可能会如何发展,一些解决方案可能会比其他解决方案稍好或更灵活,但由于我不具备这方面的知识,下面是一个关于如何在vanilla JS中做到这一点的示例

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);
}
var数据=[
{“服务器名”:“svrA”},
{“servername”:“svrB”},
{“服务器名”:“svrC”},
{“位置”:“locA”},
{“位置”:“locB”},
{“位置”:“locC”}
],
选择={
servername:document.getElementById('servername'),
位置:document.getElementById('location')
}, 
i=0,
len=data.length,
项目、道具、val;
对于(;i

如果您计划对多个选择框使用相同类型的数据结构,则
选择引用
选择
元素的对象而不是硬编码,您还可以使用中的
动态提取select
id
,并使用通用方法解析
select
引用。

Hi-Trevor3.0,请发布您尝试过的代码的最后版本。首先,发布您的实际代码-伪代码根本没有帮助,其次,你需要说什么不起作用,而不是“任何想法都会受到赞赏”,我应该把它贴在哪里?只是我当前的问题?@Trevor3.0确实,请将请求的信息编辑到现有问题中