Альтернатива для serialize () jQuery? - PullRequest
3 голосов
/ 15 сентября 2011

У меня много input с таким же атрибутом name.Я знаю, как получить их все как объект jQuery!

console.log() распечатывает что-то вроде этого:

[
<input type=​"checkbox" name=​"people" value=​"33" checked=​"checked">​
, 
<input type=​"checkbox" name=​"people" value=​"1" checked=​"checked">​
]

После этого мне нужно отправить запрос AJAX на сервер, которыйсодержит все идентификаторы людей (атрибут value).

Очевидно, я могу связать serialize() с этим объектом jQuery, и результат будет выглядеть так:

people=33&people=1

... ноЯ ищу «более дружелюбный» способ.«Более дружественный» к PHP, поэтому я могу сделать так:

foreach ($_POST['people'] as $people) {

    echo $people;

}

Ответы [ 4 ]

5 голосов
/ 15 сентября 2011

PHP требует наличия нескольких флажков с одним и тем же именем для использования скобочных обозначений. Использование следующего соглашения об именах позволит вам делать то, что вы хотите.

<input type=​"checkbox" name=​"people[]" value=​"1" checked=​"checked">​
3 голосов
/ 15 сентября 2011

просто добавьте [] к своим именам для имен своих флажков ...

<input type=​"checkbox" name=​"people[]" value=​"33" checked=​"checked">​
<input type=​"checkbox" name=​"people[]" value=​"1" checked=​"checked">​

Тогда $_POST['people'] будет массивом значений ввода ...

2 голосов
/ 15 сентября 2011

.serializeArray () может помочь: http://api.jquery.com/serializeArray/

0 голосов
/ 15 сентября 2011

Хорошо, я отвечу на мой вопрос.:)

Цикл над объектом jQuery (где <input> s) и добавление value элемента в массив.

var data = [];

$(this).parents('form').find('input[name="people"]').each(function() {

    data.push($(this).val());

});

console.log(data);

$.post('over/the/rainbow', {'people' : data});

Редактировать:

На мой взгляд, @bstakes way чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...