Есть ли способ с помощью jQuery отправить форму без сложного поля с разбивкой по полям? - PullRequest
2 голосов
/ 09 июня 2011

Я использую jQuery для выполнения перезагрузки страниц на основе AJAX по ссылкам - они вызывают окно div «Загрузка ...», а затем закрывают его, когда содержимое возвращается, и загружают содержимое. Это работает точно так, как ожидалось.

У меня есть несколько разных форм в моем проекте, которые я хотел бы отправить одним и тем же способом - при отправке вызвать окно Div "Загрузка ...", а затем закрыть его, когда содержимое вернется. Есть ли способ сделать это без написания пользовательской функции для каждой формы? Примеры, которые я видел, требуют, чтобы вы захватили и закодировали каждое поле формы и передали его в метод ajax. У некоторых форм есть только несколько полей, у других - много, так что это будет громоздким процессом. Я хотел бы просто взять все поля в форме и отправить их под именами полей.

Любая идея по этому вопросу будет принята с благодарностью!

Ответы [ 5 ]

3 голосов
/ 09 июня 2011

Похоже, вы ищете что-то вроде .serialize(). По сути, это служебная функция jQuery для кодирования элементов формы для вызова AJAX или строки запроса GET.

Использование этого дает вам что-то похожее на myinput=somevalue&myotherinput=someothervalue, основанное на name свойствах ваших элементов формы. Вы можете использовать это в любом вызове, который вы делаете с вашим сервером, при условии, что они распознают формат (например, что-то вроде данных JSON или скалярной строки).

2 голосов
/ 09 июня 2011

На самом деле это довольно легко, вы можете сделать это:

$('form').serialize();

очевидно, что вы хотите отправить ей свою форму, но если вы вызовете serialize после выбора тега формы, она будет сериализовать форму для вас. Затем вы можете использовать это в своем вызове ajax.

1 голос
/ 09 июня 2011

Возможно, одним из способов может быть использование функции $. Serialize () . Вы можете написать функцию для выполнения при отправке формы. Например, если у вас есть три формы без идентификатора «form1», «form2» и «form3»:

$(document).ready(function()
{
    $('#form1, #form2, #form3').submit(sendData);
});

function sendData()
{
    var dataString=$(this).serialize();

    $.ajax({
        url: "url_to_send.php",
        data: dataString
    });

    return false;
}
1 голос
/ 09 июня 2011

вы можете использовать serialize() таким образом

$('#formId').serialize(); 
0 голосов
/ 09 июня 2011

Вы читали это?

http://api.jquery.com/jQuery.post/

$.post("test.php", $("#testform").serialize());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...