Передача массивов в вызове ajax с использованием jQuery 1.4 - PullRequest
10 голосов
/ 04 февраля 2010

Следующий код работает для меня, используя jQuery 1.2.6, но вызывает ошибку посредника в 1.4.

var items = new Array();
items[0] = "Item 1";
items[1] = "Item 2";
items[2] = "Item 3";

var dataToSend = {'_service' : myService, '_program' : myProgram, 'selections' : items} ;

$.ajax({    
 type: "post",
 url: myURL,
 dataType: "text",
 data: dataToSend,
 success: function(request) {$('#results').html(request); } // End success
}); // End ajax method

Ошибка посредника, которую я получаю, указывает, что то, что передается в выборках, это 'выборы []

ОШИБКА: (Недопустимый символ "[" в имени поля "selections []". Этот символ не допускается в именах полей.)

Произошло ли изменение вкак jQuery обрабатывает массивы в вызове ajax?или это был неправильный способ передачи массива?

Любая помощь будет признательна.

РЕДАКТИРОВАТЬ: Ответ от @jvenema решил мою проблему.С помощью «традиционной» настройки вы можете заставить jQuery обрабатывать параметры, как в предыдущей версии.Вот некоторые дополнительные ссылки, в которых рассказывается об изменении jQuery.ajax () , jQuery.param () и запись в блоге jQuery 1.4 $ .param demysified .

Либо общий оператор

jQuery.ajaxSettings.traditional = true;

, либо как дополнительная опция в вызове ajax

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text",
 data: dataToSend,
 success: function(request) {
   $('#results').html(request);
 }  // End success
}); // End ajax method

Ответы [ 2 ]

21 голосов
/ 04 февраля 2010

jQuery 1.4 был обновлен для использования синтаксиса PHP для отправки массивов. Вы можете переключить его в старом стиле, используя:

jQuery.ajaxSetting.traditional = true;

Подробнее см. здесь .

0 голосов
/ 04 февраля 2010

Вы можете указать массив как массив Json.

'selections' : {items : ['Item 1', 'Item 2', 'Item 3']}

Я думаю, что это тоже будет работать.

'selections' : {items : items}

Посмотрите здесь для дополнительного ресурса.

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