POST против вызова Ajax

Теперь, когда большинство современных браузеров поддерживают AJAX и клиентские запросы без выполнения POST, какова роль POST (сообщение формы)?

Существуют ли ситуации или общие правила, когда POST всегда будет предпочтительнее XmlHttpRequest?

Все, что делает POST, это размещение пар значений ключа ключа внутри главы сервера. Преимущества POST, о которых я могу думать, - это большие объемы данных и мобильные браузеры. Есть много других, которых я не хватает?

N.B. Я знаю, что вы можете выполнять POST с вызовами AJAX, я говорю в основном о теге <form>

Ответ 1

Этот вопрос немного сложный, потому что он объединяет два понятия. Первый - POSTing, второй - Ajax. POSTing, по сравнению с GETting, представляет собой другой метод HTTP с различной реализацией и семантикой. Ajax или XmlHttpRequest имеет свой аналог в обычном запросе/навигации. Вы можете использовать POST или GET для XmlHttpRequest и обычной навигации и отправки формы (ну, POST всегда является "отправкой формы" ). Разница между XmlHttpRequest и обычными запросами заключается в том, что обычный запрос заменяет страницу новой страницей.

Вы можете написать практически любой веб-сайт, используя только Ajax для получения данных и изменения DOM; в основном, как работает Gmail. В традиционном смысле нет "представлений о форме". Но есть еще GET и POST, потому что сервер и браузеры интерпретируют результаты по-разному. Предполагается, что GET является идемпотентным; POST предназначен для операций, которые изменяют состояние на сервере. Например, транзакция ecom должна быть POST. Это не изменяется при использовании Ajax, потому что вы хотите, чтобы прокси-серверы также понимали, что это POST, и что они не должны пытаться кэшировать ответ.

Есть также преимущества и недостатки использования GET vs POST. Вы не можете добавлять в закладки результаты POST, поскольку параметры скрыты. Вы не можете получить что-то с значениями параметров неограниченной длины, поскольку IE поддерживает только около 2000 символов.

Также есть недостатки в использовании Ajax против обычных представлений; вы не можете пометить результирующую страницу (потому что страница не изменилась); кнопка назад не будет работать должным образом. Но с Ajax вы можете свести к минимуму переданные данные, а также обеспечить удобные обновления страницы (например, отслеживать состояние длительного процесса) без раздражающего мерцания или обновления.

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

Ответ 2

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

Ответ 3

Если вам нужно обновить всю страницу, сообщение, вероятно, будет проще.

Ответ 4

Ключевым отличием является то, что POST формы отправляет данные и может перемещаться по новому URL-адресу в течение одной поездки туда-обратно на сервер. Ajax может отправлять данные, но не может перейти на новую страницу.

Ответ 5

Er.. публикации форм?

Post действительно хорош для больших форм, поскольку значения скрыты в заголовках html и не привязаны к строке url?

Ответ 6

Если теория, HTTP GET должен быть идемпотентным запросом для информации: два идентичных GET должны возвращать ту же самую информацию.

HTTP POST, с другой стороны, предназначены для хранения состояния и выполнения действий: два идентичных POST могут выполнять разные действия в зависимости от того, кто это делает, что было сделано до этого и когда это делается.

Ответ 7

Я собираюсь ответить на свой вопрос это видео Я недавно наткнулся на Дуга Крокфорда. Он описывает увиденное между всеми аяксами и всеми обновлениями страницы.