Вопрос

Я хочу отправить массив, построенный в javascript с выбранными значениями множественного выбора. Есть ли способ отправить этот массив в скрипт 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 & amp [var [] = bar & amp; var [] = baz , он автоматически создаст массив с именем $ var , содержащий foo, bar и baz. Я думаю, что вы даже можете указать индекс массива в квадратных скобках строки запроса, и он будет придерживаться значения в этом индексе. Возможно, вам понадобится URL-адрес, чтобы закодировать скобки ... Обычный способ использования этой функции - создание поля ввода HTML с именем " var [] " ;, поэтому просто делайте то, что обычно делает браузер. В документации PHP есть раздел о переменных массива через запрос.

Возможно, вы ищете способ сериализации (версия 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 

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

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

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

<*>

отобразит что-то вроде: array = > {[0] = > 'first thing', [1] = > вторая вещь}

POST['arrayItems'] ;

отобразит что-то вроде: array = > {[0] = > 'first thing', [1] = > вторая вещь}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top