Javascript 从json响应创建动态变量
我的JSON响应如下所示:Javascript 从json响应创建动态变量,javascript,jquery,Javascript,Jquery,我的JSON响应如下所示: {"sample":[{"id":"2","name":"branch name"},{"id":"3","name":"branch name 2"}]} function getJSONObjects(){ $.getJSON("http://localhost/api/branches", function(data){ $.each(data.sample, function(i,item){
{"sample":[{"id":"2","name":"branch name"},{"id":"3","name":"branch name 2"}]}
function getJSONObjects(){
$.getJSON("http://localhost/api/branches",
function(data){
$.each(data.sample, function(i,item){
var loc = "branch";
eval("var " + loc + item.id + "=123;");
alert(loc + item.id);
});
});
}
我的函数如下所示:
{"sample":[{"id":"2","name":"branch name"},{"id":"3","name":"branch name 2"}]}
function getJSONObjects(){
$.getJSON("http://localhost/api/branches",
function(data){
$.each(data.sample, function(i,item){
var loc = "branch";
eval("var " + loc + item.id + "=123;");
alert(loc + item.id);
});
});
}
这个想法是创建branch+id
对象,这样我就可以对它做一些事情(在地图上创建标记),所以我试着给它赋值,看看这是否有效
我想让branch2
和branch3
都向123
发出警报,所以我有了一些开始。但目前,这会提醒branch2和branch3,而不是123
我在创建动态变量/对象方面几乎没有经验。有人能告诉我我做错了什么,或者用另一种方法来解决这个问题吗 不知道你想在这里做什么:
eval("var " + loc + item.id + "=123;"); // eval is EVIL
alert(loc + item.id); // just creates a string...
创建动态变量
是个坏主意。而是创建一个对象
并使用键/值
var branches = {}; // new object, move this to the scope you want to access the value from later
branch[item.id] = 123; // set the key 'item.id' to the value '123'
console.log(branch[item.id]); // retrieve the value of the key 'item.id'
但是,如果您正在这样做,您也可以将JSON数据的结构更改为以下内容:
{"sample":[{"1": {"name": "branch name1", "value": 123}, "2": {"name": "branch name2", "value": 456}}]}
然后抓取数组的元素,像上面的分支一样使用它们。尝试以下函数来迭代
数据。示例:
function(i,item){
window[loc + item.id] = 123;
alert(window[loc + item.id]);
}
此处的窗口
对象用于设置全局变量,在运行时“动态”命名。(但这不是一个好做法。)
如果loc='branch'
和item.id=2
,则警报(窗口[loc+item.id])
语句将等同于警报(branch2)