Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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_Jquery - Fatal编程技术网

Javascript 从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){

我的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){
           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)