2010-12-09 29 views
2

Mon tomcat montre qu'un seul élément étant passé dans ..

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

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

Le tableau contient environ 20 éléments.

Aussi, si je fais:

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

Toutes les valeurs SORTENT formaté comme item=someitem&item=someitem2 ..etc etc Mais le poste ajax ne sort que le premier élément du tableau. Je les veux tous passés au serveur dans la demande.

Toute aide serait grandement appréciée.

EDIT: En utilisant la version 1.3.2 a également essayé avec 1.4.4 - même problème

+0

version de jQuery utilisez-vous? –

+0

C'est parce que (je pense) du côté serveur, tous les 'items' suivants écrasent le 'item' précédent. Vous semblez utiliser jQuery 1.3.2 ou moins. Cela pourrait être une des raisons pour lesquelles les gars de jQuery ont décidé de changer le fonctionnement de '$ .param'. Je vous suggère de mettre à niveau. En outre, quelle langue de serveur utilisez-vous? – karim79

+0

@ karim79: Je ne pense pas que l'écrasement d'éléments précédents soit un problème, il doit être interprété comme un tableau. – davidbuttar

Répondre

2

Je pense que votre appel $.param() devrait être juste ceci:

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

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

EDIT: Nick est sur quelque chose. ..

De l'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" 

EDIT DE NOUVEAU

Peut-être quelque chose comme cela fonctionnera pour vous, d'imiter le comportement 1.4:

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

Demo ici: http://jsfiddle.net/Ender/EHd78/1/

+0

ceci est une suite de ceci: http://stackoverflow.com/questions/4401659/submitting-an-array-with-a-key-via-jquery-ajax/ – karim79

+0

@ karim79 - gotcha, merci pour les têtes -up – Ender

+1

+1 - Nice edit. Encore, @Uncle - vous devez envisager la mise à niveau :) – karim79

0

Oh droite j'ai raté la première phrase, oui vous obtiendrez seulement un élément passé à votre serveur, il devrait être un tableau.

Ce de Firebug quand je fais cette demande,

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