Как отправить массив на php через ajax?
Я хочу отправить массив, построенный в javascript с выбранными значениями множественного выбора. Есть ли способ отправить этот массив в php-скрипт с помощью ajax?
6 ответов
вы можете отправить обратно на свой сервер с помощью 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 получит массив, который будет name myphpvariable и он будет содержать значения myJavascriptArray.
Это что ?
IIRC, если PHP видит строку запроса, которая выглядит как http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz
, это автоматически сделает массив под названием $var
который содержит foo, bar и baz. Я думаю, вы даже можете указать индекс массива в квадратных скобках строки запроса, и он будет вставлять значение в этот индекс. Возможно, Вам потребуется URL-адрес для кодирования скобок... Обычно эта функция используется при создании поля ввода HTML с именем " var []", поэтому просто делайте то, что обычно делает браузер. Есть раздел в документация PHP по переменным массива через запрос.
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
вы можете создать массив и отправить его, как рекомендовал Meador: (следующий код является 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]=>'first thing', [1]=> second thing}