jQuery.post()
此方法通過HTTP POST請求從伺服器載入資料。
語法結構:
[JavaScript] 純文字檢視 複製程式碼jQuery.post(url [, data ] [, success(data,textStatus,jqXHR)] [, dataType ])
引數解析:
(1).url:規定把請求傳送到哪個URL。
(2).data:可選,對映或字串值。規定連同請求傳送到伺服器的資料。
(3).success:可選,請求成功時執行的回撥函式。具有三個引數,data是請求返回的資料,textStatus是請求狀態文字(例如"success"、 "notmodified"),jqXHR是當前jqXHR物件(jQuery 1.4及之前版本,該引數為原生的XMLHttpRequest物件)。
(4).dataType:可選,規定預期的伺服器響應資料型別。預設執行智慧判斷(xml、json、script或html)。
jQuery1.0版本新增。
此方法相當於$.ajax()方法:
[JavaScript] 純文字檢視 複製程式碼$.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType });
根據響應的不同的MIME型別,傳遞給success回撥函式的返回資料也有所不同,這些資料可以是XML根元素、文字字串、JavaScript檔案或者JSON物件。也可向 success回撥函式傳遞響應的文字狀態。
也可以向success回撥函式傳遞jqXHR物件(jQuery1.4中傳遞的是XMLHttpRequest 物件)。
大部分實現會規定一個success 函式:
[JavaScript] 純文字檢視 複製程式碼$.post("ajax/test.html", function(data) { $(".result").html(data); });
本例讀取被請求的HTML片段,並插入頁面中。
通過POST讀取的頁面不被快取,因此jQuery.ajaxSetup()中的 cache 和 ifModified 選項不會影響這些請求。
註釋:由於瀏覽器安全方面的限制,大多數 "Ajax" 請求遵守同源策略;請求無法從不同的域、子域或協議成功地取回資料。
註釋:如果由 jQuery.post() 發起的請求返回錯誤程式碼,那麼不會有任何提示,除非指令碼已呼叫了全域性的 .ajaxError() 方法。或者jQuery.post() 返回的 jqXHR 物件的 .error() 方法也可以用於錯誤處理。
jqXHR 物件:
從jQuery 1.5開始,所有jQuery的Ajax方法都返回一個XMLHTTPRequest物件的超集。這個通過$.post()方法返回的jQuery XHR物件,或“jqXHR”,實現了 Promise 介面,使它擁有 Promise 的所有屬性,方法和行為。jqXHR.done() (表示成功), jqXHR.fail() (表示錯誤), 和 jqXHR.always() (表示完成, 無論是成功或錯誤;在jQuery 1.6 中新增) 方法接受一個函式引數,用來請求終止時被呼叫。
Promise 介面也允許jQuery的Ajax方法, 包括 $.post(), 在一個單獨的請求中關聯到 .done(), .fail(), 和 .always() 回撥函式, 甚至允許你在請求已經結束後,指派回撥函式。如果該請求已經完成,則回撥函式會被立刻呼叫。
[JavaScript] 純文字檢視 複製程式碼// 請求生成後立即分配處理程式,請記住該請求針對 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"); });
例項程式碼:
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", { name: "John", time: "2pm" } );
請求test.php頁面,並一起傳送一些額外的資料(同時仍然忽略返回值)。
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", { 'choices[]': ["Jon", "Susan"] });
向伺服器傳遞資料陣列(同時仍然忽略返回值).
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", $("#testform").serialize());
使用 ajax 請求傳送表單資料。
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", function(data){ alert("Data Loaded: " + data); });
輸出來自請求頁面 test.php 的結果(HTML 或 XML,取決於所返回的內容)。
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
向頁面test.php傳送資料,並輸出結果(HTML 或 XML,取決於所返回的內容)。
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", { name: "John", time: "2pm" }, function(data){ process(data); }, "xml");
獲得test.php頁面的內容,並儲存為XMLHttpResponse物件,並通過process()函式進行處理。
[JavaScript] 純文字檢視 複製程式碼$.post("test.php", { "func": "getNameAndTime" }, function(data){ alert(data.name); // John console.log(data.time); // 2pm }, "json");
獲得test.php頁面返回的json格式的內容。