Необходим ли тег формы в веб-приложении 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 для отправки этого места, тогда вы захотите использовать тег формы, чтобы ваш пользователь мог где-то ввести свои данные.
Будут другие случаи, когда вы не отправляете данные из формы, и в этом случае у вас не будет формы, о которой нужно беспокоиться:)