jQuery ajax - метод post()

Пример

Запрос на веб-страницу test.php, игнорируя возвращаемое значение:

$.post("test.php");

Примеры

Измените текст элемента div через AJAX POST-запрос:

$("input").keyup(function(){
  txt=$("input").val();
  $.post("demo_ajax_gethint.asp",{suggest:txt},function(result){
    $("span").html(result);
  });
});

Попробуйте сами

Определение и использование

Метод post() загружает данные с сервера через HTTP POST-запрос.

Грамматика

jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
Параметры Описание
url Обязательно. Определяет URL, на который отправляется запрос.
data Опционально. Мapped или строковое значение. Определяет данные, передаваемые вместе с запросом на сервер.
success(data, textStatus, jqXHR) Опционально. Функция回调, выполняемая при успешном выполнении запроса.
dataType

Опционально. Определяет ожидаемый тип данных ответа сервера.

По умолчанию выполняет умное определение (xml, json, script или html).

Подробное описание

Эта функция является сокращенной функцией Ajax, эквивалентной:

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

В зависимости от различных MIME-типов ответа, передаваемых в функцию успеха success, данные, передаваемые возвращает данные, могут быть XML-элементом, текстовой строкой, файлом JavaScript или объектом JSON. Также можно передать текстовый статус ответа.

Для jQuery 1.5 также можно передать в функцию回调 success: jqXHR 对象В jQuery 1.4 передается объект XMLHttpRequest).

Большинство реализаций определяют функцию success:

$.post("ajax/test.html", function(data) {
  $(".result").html(data);
});

本例读取被请求的 HTML 片段,并插入页面中。

通过 POST 读取的页面不被缓存,因此 jQuery.ajaxSetup() 中的 cache 和 ifModified 选项不会影响这些请求。

注释:由于浏览器安全方面的限制,大多数 "Ajax" 请求遵守同源策略;请求无法从不同的域、子域或协议成功地取回数据。

注释:如果由 jQuery.post() 发起的请求返回错误代码,那么不会有任何提示,除非脚本已调用了全局的 .ajaxError() 方法。或者对于 jQuery 1.5,jQuery.post() 返回的 jqXHR 对象的 .error() 方法也可以用于错误处理。

jqXHR 对象

对于 jQuery 1.5,所有 jQuery 的 AJAX 方法返回的是 XMLHTTPRequest 对象的超集。由 $.post() 返回的 jQuery XHR 对象或 "jqXHR,"实现了约定的接口,赋予其所有的属性、方法,以及约定的行为。出于对由 $.ajax() 使用的回调函数名称便利性和一致性的考虑,它提供了 .error(), .success() 以及 .complete() 方法。这些方法使用请求终止时调用的函数参数,该函数接受与对应命名的 $.ajax() 回调函数相同的参数。

jQuery 1.5 中的约定接口同样允许 jQuery 的 Ajax 方法,包括 $.post(),来链接同一请求的多个 .success()、.complete() 以及 .error() 回调函数,甚至会在请求也许已经完成后分配这些回调函数。

// 请求生成后立即分配处理程序,请 помнить该请求针对 jqxhr 对象
    var jqxhr = $.post("example.php", function() {
      alert("success");
    })
    .success(function() { alert("second success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });
    // 在这里执行其他任务
    // 为上面的请求设置另一个完成函数
    jqxhr.complete(function(){ alert("second complete"); });

更多实例

例子 1

请求 test.php 页面,并一起发送一些额外的数据(同时仍然忽略返回值):

$.post("test.php", { name: "Bill", time: "2pm" } );

例子 2

向服务器传递数据数组(同时仍然忽略返回值):

$.post("test.php", { 'choices[]': ["Jon", "Susan"] });

例子 3

使用 ajax 请求发送表单数据:

$.post("test.php", $("#testform").serialize());

例子 4

输出来自请求页面 test.php 的结果(HTML 或 XML,取决于所返回的内容):

$.post("test.php", function(data){
   alert("Data Loaded: " + data);
 });

例子 5

向页面 test.php 发送数据,并输出结果(HTML 或 XML,取决于所返回的内容):

$.post("test.php", { name: "Bill", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

例子 6

获得 test.php 页面的内容,并存储为 XMLHttpResponse 对象,并通过 process() 这个 JavaScript 函数进行处理:

$.post("test.php", { name: "Bill", time: "2pm" },
   function(data){
     process(data);
   }, "xml");

例子 7

获得 test.php 页面返回的 json 格式的内容:

$.post("test.php", { "func": "getNameAndTime" },
   function(data){
     alert(data.name); // Bill
     console.log(data.time); //  2pm