2012-08-05 72 views
0

我有一個由我的Javascript在運行時生成的數組。 一旦該數組已滿,我想使用POST將其發送到服務器的所有值。 我怎樣才能做到這一點...jquery發佈一個數組

僞代碼:

for(i=0;i<result.data.length;i++) 
     { 
      result.data[i].id 

    } 
    $.post("receiver.php", { xxxxx }, function(data){ console.log(data);}); 

我怎樣才能像XXXX更新後

我查了文檔中的jQuery但他們期待給所有POST.I中的值不希望這樣做。 另外,我只想發一篇文章,這樣流量就會少一些。

+1

看到這個http://stackoverflow.com/questions/950673/jquery-post-array – aforaudrey 2012-08-05 03:31:09

+0

你是否試圖讓數組發送到服務器端更新的服務器,以便請求發送後將有新的/與發送的數據不同,還是希望「xxxxx」是您的陣列?我對你想要的有點困惑 – 2012-08-05 03:51:16

+0

我正在做一些在java腳本中的計算。我從不同的來源獲得價值。它是一個包含result.data [i] .id和result.data [i] .name的數組。我想用單個帖子將這個數組發送到我的服務器。 – 2012-08-05 03:58:45

回答

1

編輯

您可以使用join()獲得使用某些字符分隔它轉換爲字符串所有的數組值。

編輯2:由於庫馬爾說,他用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);}); 
+0

serializeArray不根據文檔 – 2012-08-05 03:34:33

+0

返回字符串所以使用'+「」''? :P – Purag 2012-08-05 03:37:14

+0

@GregRozmarynowycz,謝謝!我當時認爲它是JSON.encode,而不是JSON,在這種情況下最好傳遞一個直線字符串。 – 2012-08-05 03:44:54

0

類似iBlue的評論,你可以只用發送後的對象;你不必定義在後函數的對象,{ }僅僅是定義對象,這是類似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'; 

,或者你可以通過它循環,J ust以稍微不同的方式:

for(i in myData){ 
    myData[i]; //Do something with myArr[i] 
} 

for in循環也將循環通過非數字屬性。而你仍然可以通過

myData.length; 

編輯獲得的myData的長度:

而不是發送一個字符串:

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'] 

+0

Greg,這是我已經解決的問題的一部分(我可以在firefox中看到的帖子是有數組的),但在我的php中存在問題以訪問該數據 – 2012-08-05 04:30:38

+0

因此,據您所知,數據被髮送到服務器是正確的,但是你不能在PHP腳本中訪問它?嘗試'var_dump($ _ POST)'並查看服務器返回的內容。 – 2012-08-05 04:39:49

+0

陣列(2){ [ 「IDS」] => 陣列(3){ [0] => 串(1) 「1」 [1] => 串(1) 「2」 [ 2] => 串(1) 「3」 } [ 「名稱」] =>數組 (3){ [0] => 串(5) 「愛麗絲」 .. – 2012-08-05 04:47:21

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。