Плагин Jquery Form или сериализация Jquery? - PullRequest
4 голосов
/ 28 февраля 2011

Мне интересно, какие преимущества имеет плагин jQuery Form по сравнению с сериализацией?

Если я решу использовать плагин формы, могу ли я использовать новые функции jQuery 1.5?

Также в плагине формы есть что-нибудь, чтобы остановить несколько пост-спинов?Я обычно использую плагин Ajax manager , чтобы остановить дублирование сообщений ajax, но я не думаю, что смогу использовать его с плагином формы.

Спасибо

Ответы [ 5 ]

3 голосов
/ 09 марта 2011

Плагин jQuery Form предлагает простоту использования ajax с формами.Он будет использовать атрибуты формы, чтобы определить, как и где отправить форму.Атрибут метода формы сообщает плагину тип запроса для использования.Атрибут действия формы указывает, куда отправить форму.

Рассматривая пример формы, подобной этой:

<form id="myform" action="submit.php" method="post">
<!--inputs and submit button go here-->
</form>

По сути, это позволяет вам писать:

$('#myform').ajaxForm();

вместо

$.post("submit.php", $("#myform").serialize());

Плагин jquery Form также позволит вам отправлять через Ajax из вашего кода.

$('#myform').ajaxSubmit();

Плагин jQuery Forms будет сериализовать форму в любом случае, вам придется сериализовать ее перед отправкой на сервер.Плагин jQuery Form просто сериализует форму за кулисами.Приведенные выше примеры не обрабатывают никаких ответов от сервера.
Используя приведенный ниже код, вы можете добавить ответ к элементам, атрибут класса которых содержит «результат».

$('#myform').ajaxForm({ target : ".result"});

Вы можете использовать любой селектор, который являетсяподдерживается в JQuery для целевой опции.

Я не уверен, можете ли вы использовать отложенные методы с ним или нет.Я сомневаюсь в этом, потому что совместимость для 1.3.2+ и нативные методы ajax обернуты в плагин.Такой, что отложенный объект никогда не возвращается из внутренних компонентов плагина.

Форма jQuery имеет опцию beforeSubmit, которую можно использовать.Таким образом, добавив к приведенному выше коду, мы получим:

$('#myform').ajaxForm({ target: ".result", beforeSubmit: function(arr, $form, options) {
        // arr: The array of form data
        // The array of form data takes the following form: 
        // [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] 

        //some code to check if we already submitted the form

        // return false to cancel submit                  
    }
});

Однако я бы рекомендовал не делать этого, если пользователь завершил работу со страницей после отправки формы.Это только добавит ненужную сложность вашему клиентскому коду.Должно быть в порядке, если пользователь будет делать другие вещи на странице после отправки формы.Плагин jQuery Forms имеет опцию успеха, которая принимает функцию обратного вызова для вызова, если сервер возвращает ответ 200 «ОК».Вы также можете проверить веб-сайт авторов для плагина http://jquery.malsup.com/form/ для получения более подробной информации о плагине.

3 голосов
/ 08 марта 2011

Я только что заглянул в плагин форм и, если честно, если у вас немного опыта использования jquery, нет причин использовать плагин. Я не вижу ничего, что вы не можете сделать, просто используя простой jquery. Если мне нужно отправить полные данные формы, используя ajax, я использую serialize.

Это все, что вам нужно для базового вызова ajax, что может сделать плагин форм, чтобы сделать это проще?

$.ajax({
  type: 'POST',
  url: post/to/this/url,
  data: $("#myForm").serializeArray(),
  success: function() {
    // Woopie success!
    window.location.href = successurl;
  },
  error: function(jqXHR, textStatus, errorThrown){
    // do something with errors
  }
});
2 голосов
/ 09 марта 2011

Если вы хотите загружать файлы с помощью Ajax, тогда этот плагин является обязательным. Если посмотреть на документацию serializeArray , то ясно, что:

Данные из элементов выбора файлов не сериализованы

Этот плагин обрабатывает загрузку файлов без проблем.

1 голос
/ 07 марта 2011

Вам не нужен плагин для форм, особенно если задача так же проста, как сериализация и отправка формы. Плагин может содержать множество функций, которые вы, возможно, никогда не используете или не нуждаетесь. Кроме того, если вы обладаете ограниченным знанием jQuery или не слишком знакомы с тем, как создаются плагины, настроить его будет непросто. Я использую плагин, задача которого слишком сложна для создания, в таком случае зачем заново изобретать колесо, если для него уже есть плагин. Примером может служить палитра цветов с элементами управления HSB. Если вы не знаете, как работают цвета, тогда время и усилия, затраченные на исследование и создание собственного палитры цветов, будут чрезмерными.

Вы можете использовать следующие 2 строки в качестве базового подхода для сериализации и отправки формы.

var data = $(form).serialize();
$.post('post.php', '&'+data);

Узнайте больше о $ .post () на http://api.jquery.com/jQuery.post/#example-3

Теперь, если вы чувствуете, что вам нужно делать сложные вещи с вашей формой, и эти функции уже доступны в каком-то плагине, тогда не мешает попробовать его и посмотреть, как он работает для вас.

0 голосов
/ 06 марта 2011

Плагин формы полезен тем, что вы можете за один вызов отправить форму через ajax с теми же возможностями опций, что и $ .ajax.Это отличный способ просто взломать интерфейс, чтобы улучшить его поведение.Это также хорошо, потому что он плавно обрабатывает загрузку файлов через faux-ajax (iframe) без необходимости что-либо изменять.

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

...