如何使用JSON数组中的值更改$ .get中的数据元素?
以下是执行操作一次的代码示例:
$.get(url, {
'p': testerName,
'magic': 'magic', //this value is constant now but may change
'init': init1 //this is the value I want to change from a value in a JSON array
}, function() {
// console.log('done');
});
我想要改变的值是" init"。例如,如果" init1"在一个类似于:
的JSON数组中 "initvalues":[
{"init1":"usethisfirst"},
{"init1":"usethissecond"},
{"init1":"usethisthird"}
]
我希望$.get
运行三次并停止。当然,如果数组中有更多的值,它应该使用所有值并停止。值的数量预计是可变的。
在下面的示例中,如果我命名为var init1 = usethisfirst
,它将运行一次。
$.get(url, {
'p': testerName,
'magic': 'magic', //this value is constant now but may change
'init': init1 //this is the value I want to change from a value in a JSON array
}, function() {
// console.log('done');
});
并且,我可以继续为" init1"的每个不同值重复该例程。但我知道必须有更好的方法。
其他信息:
目标是避免对重复$.get
函数进行硬编码,并使用一个由JSON数组中的值数驱动n次的函数。
答案 0 :(得分:2)
最简单的方法可能是使用forEach
之类的东西来执行get请求。如果你只想设置init
某些init1
字段的var init_values = [
{"init1" : "use this first"},
{"init1" : "use this second"},
{"init1" : "use this third"}
];
init_values.forEach(function(settings) {
$.get(url, {
'p' : testerName,
'magic' : 'magic',
'init': settings['init1']
}, function() {
// Do something for this particular request.
});
});
字段,你可以尝试这样的事情:
var init_values = [
{
"p" : "some value",
"magic" : "magic",
"init" : "use this first"
},
{
"p" : "a different value",
// No value for magic - use default.
"init" : "use this second"
},
{"init" : "use this third"} // Use defaults for 'p' and 'magic'.
];
init_values.forEach(function(settings) {
var defaults = {
"p" : "default p",
"magic" : "default magic",
"init" : "default init"
};
$.get(url, $.extend(defaults, settings), function() {
// Do something for this request.
});
});
但是,根据您的JSON数组的来源,您可能还有兴趣自动设置其他字段:
{{1}}