我有一个在运行时由我的Javascript生成的数组。 一旦该数组已满,我想使用POST将其发送到服务器的所有值。 我怎么能这样做......
伪代码:
for(i=0;i<result.data.length;i++)
{
result.data[i].id
}
$.post("receiver.php", { xxxxx }, function(data){ console.log(data);});
如何在帖子中更新xxxx
我在jquery中检查了文档,但他们希望在POST中提供所有值。我不想这样做。 此外,我只想发送一次邮件,以便减少流量。
答案 0 :(得分:1)
修改强>
您可以使用join()将所有数组值转换为字符串,使用一些字符将其分隔。
编辑2 :正如Kumar所说,他正在使用2个阵列
var idsArray;
var namesArray;
for(i=0;i<result.data.length;i++)
{
idsArray[] = result.data[i].id;
namesArray[] = result.data[i].name;
}
var ids = idsArray.join(",");
var names = namesArray.join(",");
$.post("receiver.php", { ids:ids, names:names }, function(data){ console.log(data);});
答案 1 :(得分:0)
类似于iBlue的评论,你可以发一个带帖子的对象;你不必在post函数中定义对象,{ }
只是定义对象的分隔符,类似于PHP关联数组:
$.post('reciever.php', myData, function(data){ /*callback*/ });
唯一的一点是你将myData设置为如下对象:
myData = {
0: 'info',
1: 'info'
}
//or even something like this
myData = {
someProp: 'info',
someProp2: {
anotherProp: 'moreInfo'
}
}
您还可以对对象使用非数字索引,并轻松添加属性:
myData[2] = 'info';
或者你可以以略微不同的方式遍历它:
for(i in myData){
myData[i]; //Do something with myArr[i]
}
for in
循环也将遍历非数字属性。你仍然可以通过
myData.length;
编辑:
而不是发送字符串:
IDs = {}
Names = {}
for(var i = 0; i < result.data.length; i++){
IDs[i] = result.data[i].id;
Names[i] = result.data[i].name;
}
$.post('reciever.php', {IDs: IDs, Names: Names}, function(data){});
在PHP文件中,您可以像这样访问它们
$_POST['IDs'][0] = "some id";
$_POST['Names'][0] = "some name";
<击>编辑:击>
<击>我认为索引是作为字符串发送的,所以可能必须这样做
$_POST['IDs']['0']
击> <击> 撞击>
答案 2 :(得分:0)
不确定,但似乎你想这样做:
var sendObj = {};
for (var i=0; i<result.data.length; i++) {
var id = result.data[i].id,
name = result.data[i].name; // or some similiar computation
sendObj[name] = id;
}
$.post("receiver.php", sendObj, function(data){ console.log(data);});
这将发送result.data
作为name = id-value-pairs。