Почему существует ‹a›, а не отправка формы методом get?

Мне просто любопытно, почему HTML имеет тег привязки, используемый для предварительного формирования запросов GET, без возможности изменить тип HTTP-запроса, или, в противном случае, почему бы не использовать соглашение о отправке формы, поскольку у нас может быть возможность get-variables в любом случае.

Более интересно то, как теги привязки ссылаются на разделы #id на той же странице.

Есть веская причина, или это просто догматический пережиток?

Редактировать: я не спрашиваю о том, что они делают, я сомневаюсь в соглашении о тегах привязки и отправке форм.

Почему это не элемент HTTP-запроса, который охватывает эти базы и по умолчанию используется как GET, поэтому он работает со ссылкой? Почему было принято решение об этой конвенции. Я говорю, что это звучит безумно для меня, и я хочу знать, есть ли какое-то оправдание тому, когда это было принято.


person Incognito    schedule 09.11.2010    source источник


Ответы (3)


Якорь соединяет два документа или части документов, т. е. текущий и указанный. Но формы нет. Форма предназначена для отправки запросов. Вот и все.

person Gumbo    schedule 09.11.2010
comment
Тогда почему мы разрешаем переменные GET в HTTP-запросах? - person Incognito; 10.11.2010

Тег <a> используется для перехода с одной страницы на другую, что требует только запросов GET. А поскольку URL-адреса поддерживают возможность отправки переменных (например, ?a=b), нет необходимости в более сложном теге.

Очевидно, что тег <a> — это встроенный элемент, а тег <form> — блочный элемент. Таким образом, можно сделать вывод, что теги привязки должны быть простыми, а элементы формы могут быть немного сложнее.

person Harmen    schedule 09.11.2010
comment
Верно, но код возврата и содержимое не зависят от того, какой метод запроса был использован. Например, вы можете легко заставить один ресурс возвращать два результата с разными методами запроса. Тег A на самом деле не является встроенным, так как вам нужно определить inner-html, который в любом случае может превратить вещь в блок, независимо от того факта, что браузер не привязывает к нему какие-либо элементы ввода. Я мог бы так же легко создать гиперлинг, который делает <form method="get" action="example.com"><input type="hidden" name="arg" value="1"><input type="submit">Go there</submit></form> - person Incognito; 10.11.2010
comment
равно `‹a href=example.com?arg=1›нажмите здесь‹/a›, но соглашение кажется действительно странным - person Incognito; 10.11.2010

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

POST предназначен для форм и файловых вложений. GET ограничен по размеру, POST — нет.

Более интересно то, как теги привязки ссылаются на разделы #id на той же странице.

Есть веская причина, или это просто догматический пережиток?

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

person Diodeus - James MacFarlane    schedule 09.11.2010