Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

var myJavascriptArray = new Array('jj', 'kk', 'oo');

$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
   // do something with received data!
});

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

Это что?

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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