2010-12-09 71 views
2

我的tomcat日誌中只顯示一個項目在傳遞發送一個項目..

var itemArr = ["someItem", "someItem2", "someItem3"]; 

$.ajax({ 
    type: "POST", 
    url: "myServlet", 
    data: $.param({item: itemArr})  
    }); 

數組包含大約20元。

另外,如果我這樣做:

var params = $.param({item: itemArr}); 
alert(params); 

所有值問世格式化爲item=someitem&item=someitem2 ..等等 但阿賈克斯後只能從陣列輸出的第一個項目。我希望他們都通過請求中的服務器。

任何幫助將不勝感激。

編輯: 使用版本1.3.2也試圖與1.4.4 - 同樣的問題

+0

您使用jQuery的哪個版本? – 2010-12-09 20:26:15

+0

這是因爲(我認爲)在服務器端,任何後續'項目'覆蓋了以前的'項目'。你似乎在使用jQuery 1.3.2或更低版本。這可能是jQuery人員決定改變$ .param的工作原因之一。我建議你升級。另外,你使用的是什麼服務器語言? – karim79 2010-12-09 20:30:00

回答

2

我覺得你$.param()調用應該僅僅是這樣的:

var itemArr = ["someItem", "someItem2", "someItem3"]; 

$.ajax({ 
    type: "POST", 
    url: "myServlet", 
    data: $.param(itemArr)  
}); 

編輯:尼克到的東西在那裏。 ..

jQuery.param()documentation

// <=1.3.2: 
$.param({ a: [2,3,4] }) // "a=2&a=3&a=4" 
// >=1.4: 
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4" 

再次編輯

也許這樣的事情會爲你工作,效仿1.4行爲:

var itemArr = ["someItem", "someItem2", "someItem3"]; 
var paramed = decodeURIComponent($.param({ 'item[]': itemArr })); 

演示在這裏:http://jsfiddle.net/Ender/EHd78/1/

0

哦,對了,我錯過了第一句話,是的你只會得到一個傳遞給你的服務器的數據,它應該是一個數組。

這從螢火當我提出這一要求,

item[] someItem 
item[] someItem2 
item[] someItem3