Jquery发布了一个数组

Jquery post a Array

本文关键字:一个 数组 Jquery      更新时间:2023-09-26

我有一个Array,它是由我的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中给出所有值。我不想这样做。另外,我只想发一次邮件,这样流量就会减少。

编辑

您可以使用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);});

类似于iBlue的注释,您可以通过post发送对象;您不必在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]
}

CCD_ 2循环也将循环通过非数值性质。你仍然可以通过获得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']

不确定,但似乎你想这样做:

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);});

这将以name=id值对的形式发送result.data