Как я могу отправить массив в php через ajax? - PullRequest
25 голосов
/ 18 ноября 2008

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

Ответы [ 6 ]

26 голосов
/ 22 октября 2010

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

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

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

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

Это что?

18 голосов
/ 18 ноября 2008

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

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

3 голосов
/ 18 ноября 2008

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

1 голос
/ 02 мая 2012

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
1 голос
/ 18 ноября 2008

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

0 голосов
/ 08 января 2009

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

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

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

echo $_POST['arrayItems'] ; 

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

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