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






Вы можете отправить обратно на свой сервер с помощью XML или JSON. Ваш javascript должен будет создать сообщение, что в случае XML потребует, чтобы вы создали его в javascript. JSON не только легче, но и проще в использовании javascript. Проверьте JSON-PHP для разбора JSON.
Возможно, вы захотите взглянуть на Создание данных JSON в PHP
даже не обязательно быть XML или JSON, вы можете опубликовать строку CSV или что-то еще
Библиотека JSON-PHP, на которую указывает fuzzymonk, устарела, и более быстрая реализация уже есть в PHP. См. Руководство для функций json_encode и json_decode.
Возможно, вы ищете способ Сериализовать (версия jQuery) данных.
Чтобы добавить некоторую информацию, я мог найти версию этого совета для прототипа на prototypejs.org/api/object
IIRC, если PHP видит строку запроса, которая выглядит как http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz, он автоматически создает массив с именем $var, содержащий foo, bar и baz. Я думаю, вы даже можете указать индекс массива в квадратных скобках строки запроса, и он будет вставлять значение в этот индекс. Вам может потребоваться URL-кодирование скобок ... Обычно эта функция используется при создании поля ввода HTML с именем "var []", поэтому просто делайте то, что браузер обычно там делает. В документации по PHP есть раздел о переменных массива через запрос.
Вы можете создать массив и отправить его, как рекомендовал 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}
Вы можете сделать это с помощью метода $ .post jQuery (например):
var myJavascriptArray = new Array('jj', 'kk', 'oo');
$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
// do something with received data!
});
Php получит массив с именем myphpvariable и будет содержать значения myJavascriptArray.
Это оно ?
+1. Спасибо большое! Некоторое время я пытался понять, как это сделать.
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
Я нашел это лучшим ответом, потому что он не привязан к какой-либо структуре javascript, в частности.