Jquery发布一个数组

时间:2012-08-05 03:27:36

标签: javascript jquery

我有一个在运行时由我的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中提供所有值。我不想这样做。 此外,我只想发送一次邮件,以便减少流量。

3 个答案:

答案 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的长度
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。