jQuery ajax - post() 方法

实例

请求 test.php 网页,忽略返回值:

$.post("test.php");

TIY 实例

通过 AJAX POST 请求改变 div 元素的文本:

$("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 可选。映射或字符串值。规定连同请求发送到服务器的数据。
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 对象。也可向 success 回调函数传递响应的文本状态。

对于 jQuery 1.5,也可以向 success 回调函数传递 objek jqXHR(jQuery 1.4 中传递的是 XMLHttpRequest 对象)。

大部分实现会规定一个 success 函数:

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

contoh ini membaca bagian HTML yang di permintaan dan disisipkan ke halaman.

Halaman yang diakses melalui POST tidak disimpan di cache, sehingga jQuery.ajaxSetup() pilihan cache dan ifModified dalam hal ini tidak mempengaruhi permintaan.

Komentar:Akibat batasan keamanan browser, sebagian besar permintaan "Ajax" mengikuti strategi sumber yang sama; permintaan gagal untuk mengambil data dari domain, subdomain, atau protokol yang berbeda.

Komentar:Jika permintaan yang dijalankan oleh jQuery.post() mengembalikan kode kesalahan, tidak akan ada pemberitahuan apapun kecuali skrip sudah memanggil global metode .ajaxError(). atau untuk jQuery 1.5, metode .error() objek jqXHR yang dikembalikan oleh jQuery.post() juga dapat digunakan untuk pengendalian kesalahan.

objek jqXHR

Untuk jQuery 1.5, semua metode AJAX jQuery mengembalikan kumpulan yang lebih besar daripada objek XMLHTTPRequest. Objek jQuery XHR yang dikembalikan oleh $.post() atau "jqXHR," melaksanakan interfais konvensi, memberikan semua properti, metode, dan perilaku konvensi. $.ajax() Dengan pertimbangan kenyamanan dan konsistensi nama fungsi balik yang digunakan, ia menyediakan metode .error(), .success() dan .complete(). Metode ini menggunakan parameter fungsi yang dipanggil saat permintaan selesai, yang menerima parameter yang sama seperti fungsi balik $.ajax() yang bernama yang sama.

Interfais konvensi di jQuery 1.5 juga memungkinkan metode Ajax jQuery, termasuk $.post(), untuk menghubungkan berbagai fungsi balik .success(), .complete() dan .error() untuk permintaan yang sama, bahkan jika fungsi balik ini sudah dialokasikan setelah permintaan selesai.

// Selesaikan permintaan serta alokasikan pemroses, ingat permintaan ini untuk objek jqxhr
    var jqxhr = $.post("example.php", function() {
      alert("keberhasilan");
    })
    .success(function() { alert("kedua keberhasilan"); })
    .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