Статьи

JQuery AJAX Различия между GET и POST

Довольно много людей задавали мне вопрос «в чем разница между GET и POST, когда я указываю запрос AJAX?». Это ключевые различия между GET и POST, когда вы задаете запрос AJAX с помощью jQuery .

Похожие сообщения:

ПОЛУЧИТЬ ПРОТИВ ПОЧТЫ

  • Запрос GET используется для получения данных с сервера.
  • POST-запрос используется для изменения данных на сервере.

Когда использовать GET

Если обработка формы идемпотентна (т. Е. Она не оказывает длительного наблюдаемого влияния на состояние мира), то метод формы должен быть GET. Многие поиски в базе данных не имеют видимых побочных эффектов и идеально подходят для форм запросов.

Характеристики GET:

  • Используйте GET для безопасных действий и POST для небезопасных действий.
  • GET-запросы могут быть кэшированы
  • GET-запросы могут остаться в истории браузера
  • GET запросы могут быть добавлены в закладки
  • GET-запросы могут быть распределены и распространены
  • GET-запросы могут быть взломаны

W3.org GET Определение метода

Когда использовать POST

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

  • Используйте POST при работе с длинными запросами — если вы отправляете большие объемы данных или конфиденциальные данные по HTTPS, вам нужно использовать POST. Некоторые браузеры, такие как Internet Explorer, накладывают ограничение на строку URL, поэтому это может нарушить действие некоторых форм, если вы используете GET.

Вы можете рассмотреть возможность использования POST для следующих действий:

  • Публикация сообщения на доске объявлений, в группе новостей, списке рассылки или аналогичной группе статей.
  • Предоставление блока данных, такого как результат отправки формы, процессу обработки данных
  • Расширение базы данных с помощью операции добавления
  • Аннотация существующих ресурсов

W3.org Определение метода POST

GET vs POST в AJAX звонках

Если вы не отправляете конфиденциальные данные на сервер или не вызываете скрипты, которые обрабатывают данные на сервере, чаще используется GET для вызовов AJAX. Это связано с тем, что при использовании XMLHttpRequest браузеры реализуют POST как двухэтапный процесс (сначала отправляя заголовки, а затем данные). Это означает, что запросы GET более отзывчивы — то, что вам нужно в средах AJAX! Поскольку запросы «Ajax» подчиняются той же политике происхождения, риски использования безопасности при использовании GET вместо POST ограничены. Используйте GET для «получения» информации с сервера, например, загрузку файла JavaScript (для этого можно использовать сокращенную функцию AJAX $ .getScript ()) или загрузку файла JSON (сокращенную функцию AJAX $ .getJSON () можно использовать для сделай это).

JQuery AJAX Функции, которые по умолчанию используют GET: $ .get (), $ .getScript () , $ .getJSON () , .load ()

JQuery AJAX Функции, которые по умолчанию используют POST: $ .post ()

Пример GET AJAX Call — вызов PHP-скрипта для получения количества подписчиков в твиттере.

$.ajax({
  url: 'getTwitterFollowers.php',
  type: 'GET',
  data: 'twitterUsername=jquery4u',
  success: function(data) {
	//called when successful
	$('#ajaxphp-results').html(data);
  },
  error: function(e) {
	//called when there is an error
	//console.log(e.message);
  }
});

Посмотреть демо

Пример POST AJAX Call — Отправка формы авторизации.

 var $form = $("#myForm");
    var url = $form.attr("action") + "?" + $form.serialize();
    $("#" + id).html(url);

$.ajax({
	type: "POST",
	url: action,
	data: $form,
	success: function(response)
	{
		if(response == 'success')
			$("#myForm").slideUp('slow', function() {
				$("#msg").html("You have logged in successfully!");
			});
		else
			$("#msg").html("Invalid username and/or password.");
	}
});

Вы успешно вошли в систему!

«); }); еще $ ( "# Сбщ"). HTML (»

Неверное имя пользователя и / или пароль.

«); } });

Дальнейшие чтения

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

При использовании GET генерируется HTTP-запрос, который передает данные на веб-сервер в виде набора закодированных параметров, добавляемых к URL-адресу в строке запроса.

Например, было бы плохой идеей использовать GET для отправки формы входа в систему, поскольку данные для входа отображались бы в адресной строке.

 GET /login.php?username=user&password=12345 HTTP/1.1
Host: domain.com

Но если бы мы использовали POST, параметры передавались бы в теле HTTP-запроса, а не в URL. Это произошло бы за кулисами между браузером и веб-сервером.

 POST /login.php HTTP/1.1
Host: domain.com
username=user&password=12345

ПОЛУЧИТЬ Кэширование
GET предназначен для использования, когда вы читаете информацию для отображения на странице. Браузеры будут кэшировать результат запроса GET, и если тот же запрос GET будет выполнен снова, они отобразят кэшированный результат, а не повторно выполнят весь запрос.


REST — «RESTful» клиент-серверная архитектура

HTTP, например, имеет очень богатый словарный запас с точки зрения глаголов (или «методов»), URI, типов мультимедиа в Интернете, кодов запросов и ответов и т. Д. REST использует эти существующие функции протокола HTTP и, таким образом, позволяет существующему многоуровневому прокси и компоненты шлюза для выполнения дополнительных функций в сети, таких как HTTP-кэширование и обеспечение безопасности.

Прочитайте о «передаче состояния представительства» (REST): http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_example:_the_World_Wide_Web


REST — «RESTful» веб-сервисы (API)

Это набор ресурсов с четырьмя определенными аспектами:
базовый URI для веб-службы, такой как http://example.com/resources/
Интернет-тип данных, поддерживаемый веб-сервисом. Это часто JSON, XML или YAML, но это может быть любой другой допустимый тип интернет-медиа.
набор операций, поддерживаемых веб-службой с использованием методов HTTP (например, POST, GET, PUT или DELETE).
API должен быть управляемым гипертекстом. [11]

http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services

Вывод

Ну, я надеюсь, что у вас есть четкое представление о том, когда использовать GET, а когда использовать POST. Если вы все еще не уверены или хотите проверить, что происходит за кулисами ваших вызовов AJAX, используйте такой инструмент, как Firebug NET Panel, чтобы увидеть, куда отправляются ваши данные (например, в заголовке), тип запроса. Кроме этого, счастливого Ajax’ing!