Я хочу отправить массив, построенный в javascript, с выбранными значениями множественного выбора. Есть ли способ отправить этот массив в php-скрипт с помощью ajax?Как отправить массив на php через ajax?
ответ
Вы можете отправить сообщение на свой сервер с помощью XML или JSON. Ваш javascript должен будет создать сообщение, которое в случае XML потребует от вас создать его в javascript. JSON не только легче, но и проще в javascript. Отъезд JSON-PHP для разбора JSON.
Вы можете взглянуть на Creating JSON Data in PHP
Вы можете искать способ Serialize (версия JQuery) данные.
IIRC, если PHP видит строку запроса, которая выглядит как http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz
, она автоматически сделает массив с именем $var
, который содержит foo, bar и baz. Я думаю, вы даже можете указать индекс массива в квадратных скобках строки запроса, и он будет придерживаться значения в этом индексе. Вам может понадобиться URL-кодирование скобок ... Обычный способ использования этой функции заключается в создании поля ввода HTML с именем «var []», поэтому просто делайте то, что обычно делает браузер. В документации по переменным массива через запрос содержится раздел.
Вы можете создать массив и отправить его, как это было рекомендовано Meador: (следующий код 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] => вторая вещь}
Вы можете сделать метод JQuery (к примеру), что с $ .post:
var myJavascriptArray = new Array('jj', 'kk', 'oo');
$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
// do something with received data!
});
Php получит массив, который будет называть myphpvariable и он будет содержать значения myJavascriptArray.
Это что?
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
Я нашел это как лучший ответ, потому что он не прилипает к любой инфраструктуре javascript, в частности. – Lucia 2008-11-18 19:00:35
даже не должен быть XML или JSON, вы можете опубликовать CSV-строку или что-нибудь. – annakata 2009-01-08 12:22:13
. Хьютированная библиотека JSON-PHP fuzzymonk устарела, и более быстрая реализация уже находится в PHP. См. Руководство по функциям json_encode и json_decode. – 2009-01-08 12:37:02