0

我有一个由我的 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 中提供所有值。我不想这样做。另外,我只想发送一次帖子,这样流量就会减少。

4

3 回答 3

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);});
于 2012-08-05T03:32:25.253 回答
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 发送。

于 2012-08-05T05:01:10.543 回答
0

类似于 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]
}

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";

编辑:

Actaully 我认为索引是作为字符串发送的,所以可能必须这样做

$_POST['IDs']['0']

于 2012-08-05T03:48:35.040 回答