Метод jQuery $ .ajax отправляет только один элемент из моего сериализованного массива. - PullRequest
2 голосов
/ 09 декабря 2010

Мой журнал 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 .. и т. Д., Но пост Ajax выводит только первый элемент из массива.Я хочу, чтобы все они были переданы на сервер в запросе.

Любая помощь будет высоко ценится.

РЕДАКТИРОВАТЬ: Использование версии 1.3.2 также пытались с 1.4.4 - та же проблема

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

Я думаю, что ваш $.param() звонок должен быть таким:

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

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

РЕДАКТИРОВАТЬ: Ник на что-то там ...

Из jQuery.param() документации :

// <=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 голосов
/ 09 декабря 2010

Ах да, я пропустил первое предложение, да, вы получите только один элемент, переданный на ваш сервер, это должен быть массив.

Это из firebug, когда я делаю этот запрос,

item[]  someItem
item[]  someItem2
item[]  someItem3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...