2011-02-01 3 views
4

Быстрый вопросотправка jquery .serializeArray(); Выход через AJAX

Если я сериализовать форму с помощью .serializeArray(); функции JQuery в мне нужно сделать что-нибудь к нему, прежде чем я могу отправить его с помощью JQuery такое AJAX data:?

например. могу ли я отправить

[{name: inp1, value: 'val1'}, {name: inp2, value: 'val2'}] как есть, или мне нужно предварительно обработать его каким-то образом?

и, в php, как бы я это прочитал?

ответ

23

Здесь лучше использовать serialize. Это преобразует значения вашей формы в простую строку, которая может быть использована в качестве data атрибута на вызове Аякса:

var myData = $('#yourForm').serialize(); 
// "inp1=val1&inp2=val2" 
$.ajax({ 
    url: "http://example.com", 
    data: myData 
}); 

Предположив это пошлет PHP с использованием методы GET, вы можете получить доступ к этим данным с помощью $_GET['inp1'] и $_GET['inp2']


Edit: Вы можете преобразовать массив сделанный serializeArray в строку параметров с помощью $.param

var myData = $('#yourForm').serializeArray(); 
// remove items from myData 
$.ajax({ 
    url: "http://example.com", 
    data: $.param(myData) // "inp1=val1&inp2=val2" 
}); 
+0

Сообщение:/ также, я делаю предварительную обработку возвращаемого массива (удаление объектов, которые не были изменены с момента создания формы), поэтому мне нужен массив – Hailwood

+1

@Hailwood См. Обновленный ответ. Переменные POST будут доступны с помощью '$ _POST ['inp1']' вместо этого, как обычно в PHP. – lonesomeday

Смежные вопросы