[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как передать массив через Ajax?
Maktraher
Как передать массив HTML формы (например текстовых полей) через ajax в php обработчик? С одним полем, имеющим уникальное название — понятно.

Например

...
<input type="text" name="myname" value="Значение">
...

В JavaScript формируем запрос...

...
query = 'variable=' + encodeURIComponent(document.getElementsByName('myname').value);
...


И дальше в php принимаем...

...
$variable = !empty($_POST['variable']) ? $_POST['variable'] : NULL;
...


Здесь все понятно...

А как быть если нужно передать массив?

...
<input type="text" name="myname[]" value="Значение1">
<input
type="text" name="myname[]" value="Значение2">
<input
type="text" name="myname[]" value="Значение3">
...





Спустя 2 минуты, 10 секунд (15.03.2011 - 16:12) Maktraher написал(а):
Я так понимаю, его нужно собрать в одну строчку, потом передать эту строчку как переменную, а в php снова ее раздербанить на кусочки? Если так, то опять же не понятно как делать... какие функции для этого нужны и т.д. sad.gif

Спустя 6 минут, 39 секунд (15.03.2011 - 16:18) Oyeme написал(а):
Используй сериализацию для этого,примеры думаю что сам найдёшь.
http://api.jquery.com/serializeArray/

Спустя 16 минут, 33 секунды (15.03.2011 - 16:35) Maktraher написал(а):
А как хотябы вообще массив в яваскрипте то принять?

Спустя 5 минут, 30 секунд (15.03.2011 - 16:41) Michael написал(а):
Так попробуй:
var elms = document.getElementsByName('myname[]');
var str = 'myname=';
for (var i = 0; i < elms.length; i++) {
str += encodeURIComponent(elms[i].value) + '|';
}

а в php разберешь уже по '|'

Спустя 8 минут, 59 секунд (15.03.2011 - 16:50) Maktraher написал(а):
Michael, спасибо, работает wink.gif

Спустя 19 минут, 49 секунд (15.03.2011 - 17:09) Maktraher написал(а):
Одно лишь только НО есть... после обработки вашим методом, у меня строка стала иметь вид:
Значени1|Значение2|Значение3|

В результате после разбиения функцией explode(), у меня в массиве уже в php оказывается на одно значение больше, последнее значение пустое... как избежать этого?

Спустя 1 минута, 17 секунд (15.03.2011 - 17:11) ZSH написал(а):
trim($stroka, '|');

Спустя 7 минут (15.03.2011 - 17:18) Maktraher написал(а):
ZSH, точняк, я и забыл о trim(); smile.gif

Спустя 1 час, 59 минут, 5 секунд (15.03.2011 - 19:17) Maktraher написал(а):
А можно как-нибудь склеить 2 массива?

Например у меня получилось name[0] = 'Вася', name[1] = 'Петя' и т.д.

И есть еще один массив family[0] = 'Петров', family[1] = 'Васичкин'

Нужно образовать новый массив например user['Вася'] = 'Петров', user['Петя'] = 'Васичкин'

Спустя 45 минут, 50 секунд (15.03.2011 - 20:03) Maktraher написал(а):
то есть чтобы значения массива с именамим стали ключами для нового массива, а значения фамили так и остались значениями...

Спустя 2 минуты, 39 секунд (15.03.2011 - 20:05) ZSH написал(а):
типа такого?

$user = array();
foreach($name as $key => $val)
$user[$val] = $family[$key];

Спустя 22 минуты, 6 секунд (15.03.2011 - 20:27) Maktraher написал(а):
ZSH, да. Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.