我正在将大量变量传递给 http 服务器。我不想编写长命令提示符,而是想将变量设置为对象文字。如果我静态设置它,它工作正常。但我想循环填充对象。 这有效:
var data= { T1: 123,
R1: 'L',
T2: 3434,
R2: 'R'};
$.post(url,data, get_outcome);
但我想编写一个循环来执行此操作,并且我需要了解如何使用我的变量名称和值填充对象字面量。 (这个例子只是为了演示)如果我这样尝试它会失败:
var data=[];
data.push({T1: 123});
data.push({T2: 3434});
data.push({R1: 'L'});
data.push({R2: 'R'});
$.post(url,data, get_outcome);
我什至试过这个:
var data=[];
var a,val,name;
name={"T1","T2","R1","R2"};
val={"123","3434","L","R"};
for(a=0;a<4;a++){
data.push({name[a]:val[a]});
}
$.post(url,data,get_outcome);
最终函数应该像这样工作:
function Save(var values, var val){
var a,name;
var data=[];
for(a=0;a<values;a++){
name="T"+(a+1);
data.push({name: val[a]});
}
$.post(url,data,get_outcome);
}
我做错了什么?
我按如下方式实现了 Rajiv 建议的解决方案:
function save(){
var data=[];
function dataPush(name, val) {
var obj = {};
obj[name] = val;
data.push(obj);
}
//eg hardcoded values
dataPush('T1',123);
dataPush('T2',3123);
dataPush('R1',"R");
dataPush('R2',"L");
// values stored in arrays elsewhere
for(a=2;a<max;a++){
temp="T"+(a+1);
dataPush(temp,T[a]);
temp="R"+(a+1);
dataPush(temp,R[a]);
}
$.post(url,data, get_outcome);
}
最佳答案
您正在创建一个数组。像这样创建
var data={};
data.T1 = 123;
data.T2 = 3434;
data.R1 = 'L';
data.R2 = 'R';
$.post(url,data,get_outcome);
并且在使用数组的时候
var data={};
var a,val,name;
name={"T1","T2","R1","R2"};
val={"123","3434","L","R"};
for(a=0;a<4;a++){
data[name[a]] = val[a];
}
关于javascript - 设置对象文字数组以将值传递给服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913630/