Я хочу отправить массив, построенный в javascript, с выбранными значениями множественного выбора. Есть ли способ отправить этот массив на php script с помощью ajax?
Как отправить массив на php через ajax?
Ответ 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] = > вторая вещь}