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

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

6 ответов


вы можете отправить обратно на свой сервер с помощью 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 получит массив, который будет name myphpvariable и он будет содержать значения myJavascriptArray.

Это что ?


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


вы можете искать способ сериализовать (версия jQuery) данные.


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

вот synatax:

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

вы можете создать массив и отправить его, как рекомендовал Meador: (следующий код является 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]=>'first thing', [1]=> second thing}