Как отправить массив на php через ajax?

Я хочу отправить массив, построенный в javascript, с выбранными значениями множественного выбора. Есть ли способ отправить этот массив в php-скрипт с помощью ajax?

Solutions Collecting From Web of "Как отправить массив на php через ajax?"

Вы можете отправить обратно на свой сервер с помощью XML или JSON. Ваш javascript должен будет создать сообщение, которое в случае XML потребует от вас создать его в javascript. JSON не только легче, но и проще в javascript. Ознакомьтесь с JSON-PHP для разбора JSON.

Вы можете взглянуть на создание данных JSON в PHP

Вы можете сделать это с помощью метода $ .post для jQuery (например):

var myJavascriptArray = new Array('jj', 'kk', 'oo'); $.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){ // do something with received data! }); 

Php получит массив, который будет иметь имя myphpvariable, и он будет содержать значения myJavascriptArray.

Это оно ?

IIRC, если PHP видит строку запроса, которая выглядит как http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz , она автоматически создаст массив с именем $var который содержит foo, бар и базар. Я думаю, вы даже можете указать индекс массива в квадратных скобках строки запроса, и он будет придерживаться значения в этом индексе. Вам может понадобиться URL-кодирование скобок … Обычный способ использования этой функции заключается в создании поля ввода HTML с именем «var []», поэтому просто делайте то, что обычно делает браузер. В документации по переменным массива через запрос содержится раздел.

Возможно, вы ищете способ Serialize (версия jQuery) данных.

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

вот синтаксис:

 jQuery.ajaxSetting.traditional = true; 

вот пример

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

Вы можете создать массив и отправить его, как рекомендовал Меадор: (следующий код Mootooled, но аналогичный в других библиотеках / простой старый JS)

 myArray.each(function(item, index) myObject.set('arrayItems['+index+']', item); myAjax.send(myObject.toQueryString()); 

Это отправит в php массив с именем arrayItems, к которому можно получить доступ через $ _POST ['arrayItems']

 echo $_POST['arrayItems'] ; 

будет звучать примерно так: array => {[0] => «первая вещь», [1] => вторая вещь}