Ajax запрос методом POST

jQuery.post() – осуществляет запрос к серверу без перезагрузки страницы методом POST. Функция имеет несколько необязательных параметров.

jQuery.post(url,[data],[callback],[dataType])
  • url — url-адрес, по которому будет отправлен запрос.
  • data — данные, которые будут отправлены на сервер. Они должны быть представлены в форме объекта, в формате: {fName1:value1, fName2:value2, …}.
  • callback (data, textStatus, jqXHR) — пользовательская функция, которая будет вызвана после ответа сервера.
    • data данные, присланные с сервера.
    • textStatus статус того, как был выполнен запрос.
    • jqXHR объект jqXHR (в версиях до jquery-1.5, вместо него использовался XMLHttpRequest)
  • dataType — ожидаемый тип данных, которые пришлет сервер в ответ на запрос (подробности тут).

Отправка данных методом POST. Простое использование

Простейший ajax-запрос — пустой запрос к серверу, без обработки ответа. Например, такой запрос можно использовать для подсчета количества определенных действий, например количества кликов по ссылке — каждый раз при клике по определенной ссылке в файле click.php будет выполняться запись в базу:

$(function(){
  $('a').click(function(){
    $.post("click.php");
  });
});

Рассмотрим еще несколько примеров по принципу от простого к более сложному.

  1. Отправим серверу id ссылки по которой был совершен клик
    $(function(){
      $('a').click(function(){
        $.post("test.php", { id: $(this).attr('id) } );
      });
    });
    
  2. Отправим серверу id ссылки по которой был совершен клик и примем ответ — сколько всего кликов было именно по этой ссылке
    $(function(){
      $('a').click(function(){
        $.post("test.php", { id: $(this).attr('id') }),
        viewResult
      });
    
      function viewResult(data) {
        alert(data)
      }
    });

    После получения ответа от сервера будет вызвана функция viewResult, которая выведет на экран сообщение с данными, присланными сервером.

  3. Отправим серверу id ссылки по которой был совершен клик и примем ответ в json формате
    $(function(){
      $('a').click(function(){
        $.post("test.php", { id: $(this).attr('id') },
        viewResult,
        "json"
      });
    
      function viewResult(data) {
        alert(data)
      }
    });

Отправка данных методом POST. Продвинутое использование

$.post является сокращенным вариантом функции $.ajax(), вызванной со следующими параметрами:

$.ajax({
  url: url,
  type: "POST",
  data: data,
  success: success,
  dataType: dataType
});

Обработка выполнения запроса

Стандартным средством обработки успешного выполнения запроса, является указание собственной функции в параметре success. При вызове она получает данные переданные сервером, текстовый статус выполнения запроса, а так же Объект jqXHR.
Начиная с jQuery-1.5, метод $.post() возвращает объект jqXHR, который помимо прочего реализует интерфейс deferred, что позволяет задавать дополнительные обработчики выполнения. Помимо стандартных для объекта deferred методов .done(), .fail() и .then(), с помощью которых можно устанавливать обработчики, в jqXHR реализованы .success(), .error() и .complete(). Это сделано для соответствия привычным названиям методов, с помощью которых устанавливаются обработчики выполнения ajax-запросов.

Примечание:

jqXHR.success(), jqXHR.error(), и jqXHR.complete() обработчики выполнения будут удалены в jQuery 3.0. Вместо этого вы можете использовать jqXHR.done(), jqXHR.fail() и jqXHR.always().

 

2 комментария

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *