设置对象文字数组以将值传递给服务器
Setting up a object literal array to pass values to a server
我正在向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];
}
var data = {};
var name = ["T1", "T2", "R1", "R2"];
var val = [123, 3434, "L", "R"];
name.forEach(function(el, index){
data[el] = val[i];
});
将产生
var data= { T1: 123,
R1: 'L',
T2: 3434,
R2: 'R'
};
var arry = [];
function dataPush(name, val) {
var obj = {};
obj[name] = val;
arry.push(obj);
}
KeyName =["T1","T2","R1","R2"];
KeyVal = ["123", "3434", "L", "R"];
for (var i = 0; i < KeyName.length; i++) {
dataPush(KeyName[i], KeyVal[i]);
}
console.log(arry);
之后使用此阵列
我从您的问题中了解到的只是,您需要创建一个对象并将其发送到服务器。对象需要有一些您想要动态添加的属性,而不是静态添加。
如果是这样,你可以这样做:
var localData = [{key1: 'val1'},{key2: 'val2'},{key3: 'val3'}, {key4: 'val4', key5:'val5'}] // your data that you want to send
function createPayload(localData) {
var payload = {};
localData.forEach(function(o) {
for(var key in o) {
payload[key] = o[key];
}
});
return payload;
}
var objectToSend = createPayload(localData);
console.log(objectToSend);
相关文章:
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 将值传递给jquery创建的输入字段
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- 可以't使用ajax调用将值传递给Web服务
- 如何在同一页面上使用windows.location.href将js值传递给php时停止刷新页面
- 多个单选按钮,需要将选定的值传递给javascript
- 将 MSSQL 表值传递给 javascript
- 如何将 HTML 文档作为起始值传递给 CodeMirror
- 如何将数据存储值传递给javascript?我需要从gae数据存储中获取数据,并需要传递javascript
- 将索引值传递给javascript命名空间数组
- 如何将客户端javascript返回值传递给ASP经典服务器端
- 无法将ASP服务器控件值传递给javascript函数
- 将服务器控件的值传递给ASPx客户端事件