我正在使用promise来获取JSON对象:
var x = get();
x.done(function(data) {
for(var i in data) {
}
});
当我执行console.log(data);
[{…}]
0:
customer: "9028"
data:
active: "1"
customer: "9028"
description: ""
id: "13717"
inherited: "0"
name: "Out of Hours"
priority: "1"
shared: "0"
sound: ""
__proto__: Object
voip_seq: "4"
__proto__: Object
length: 1
__proto__: Array(0)
所以工作正常,但是在我的for循环中,我想向data
添加2个项目
我尝试将其添加到我的.done
var obj = { name: "Light" };
data.push(obj);
但这并没有加到data
我的for循环如下:
for(var i in data) {
var m = '<option value="' + data[i].data.id + '"'
if(data[i].data.id == selected_val) {
m += ' selected="selected"';
}
m += '>' + data[i].data.name + '</option>';
$('#' + value_element_id).append(m);
}
答案 0 :(得分:0)
如果要在选择项中再添加两个项目,只需在循环开始之前将新对象推入data
数组中即可。这些对象必须包含与来自Promise的JSON匹配的结构和属性(“数据”子属性中的“名称”和“ id”),以便您的循环代码可以处理它们。
在最简单的情况下,它可能和
一样简单x.done(function(data) {
data.push({ "data": { "name": "light", "id": 1234 } });
data.push({ "data": { "name": "dark", "id": 5678 } });
for(var i in data) {
var m = '<option value="' + data[i].data.id + '"'
if (data[i].data.id == selected_val) {
m += ' selected="selected"';
}
m += '>' + data[i].data.name + '</option>';
$('#' + value_element_id).append(m);
}
});
答案 1 :(得分:-1)
在这种情况下,我认为data
不是数组,因此没有.push()
方法。您可以像这样向对象添加属性:
for(var i in data) {
var m = '<option value="' + data[i].data.id + '"'
if(data[i].data.id == selected_val) {
m += ' selected="selected"';
}
m += '>' + data[i].data.name + '</option>';
$('#' + value_element_id).append(m);
// here it will add obj to data
var obj = {name: "Light"};
data = {
...data,
obj
}
}