Необходим ли тег формы в веб-приложении AJAX?

Я прочитал учебник AJAX-формы, например this. Тег используется в HTML-коде. Однако я считал, что это необязательно. Поскольку мы отправляем HTTP-запрос через XmlHttpRequest, отправленные данные могут быть любыми, а не необязательными input в форме.

Итак, есть ли причина иметь тег формы в HTML для приложения AJAX?

Ответы

Ответ 1

Помимо прогрессивного улучшения, как уже обсуждалось (не заставляйте ваш сайт требовать JavaScript до тех пор, пока он действительно не понадобится), вам понадобится <form> с onsubmit, чтобы надежно поймать ввод Enter.

(Конечно, вы можете попробовать захватить нажатие клавиш в отдельных полях формы, но это неудобно, хрупко и никогда не будет на 100% воспроизводить поведение браузера на основе того, что представляет собой представление формы.)

Ответ 2

Иногда веб-приложения, использующие ajax для преобразования своих данных, либо используют формы как резерв, когда пользователь не имеет JavaScript (иногда это дорого, но очень хорошо).

В противном случае, если приложение создает и отправляет запрос AJAX, нет никаких веских оснований для использования form, за исключением редких особых случаев, когда вам действительно нужен элемент формы. Сверху моей головы:

  • при использовании функции сериализации формы jQuery
  • при мониторинге всех полей в форме изменений
  • когда необходимо использовать кнопку reset form (что, насколько мне известно, доступно только в <form>).

Ответ 3

Я вижу по крайней мере две возможные причины:

  • Изящная деградация (см. также Ненавязчивый JavaScript): если у пользователя нет Javascript, включенного в его браузере, ваш сайт должен по-прежнему работать с обычным HTML-кодом.
  • Поведение браузера: пользователи знают, какие формы выглядят и как они себя ведут (автозаполнение, исправление ошибок,...); это лучше не заходить слишком далеко от этого.


И я бы добавил, что если вы хотите, чтобы пользователь вводил некоторые данные, то почему существуют теги <form> и <input>; -)

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

Ответ 4

Это действительно зависит от того, что вы делаете. Если вы хотите получить контент формы, представленный пользователем, и использовать AJAX для отправки этого места, тогда вы захотите использовать тег формы, чтобы ваш пользователь мог где-то ввести свои данные.

Будут другие случаи, когда вы не отправляете данные из формы, и в этом случае у вас не будет формы, о которой нужно беспокоиться:)