# 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 回調函數傳遞 [jqXHR 對象](#jqxhr_object)(jQuery 1.4 中傳遞的是 XMLHttpRequest 對象)。
大部分實現會規定一個 success 函數:
```
$.post("ajax/test.html", function(data) {
$(".result").html(data);
});
```
本例讀取被請求的 HTML 片段,并插入頁面中。
通過 POST 讀取的頁面不被緩存,因此 [jQuery.ajaxSetup()](/jquery/ajax_ajaxsetup.asp "jQuery ajax - ajaxSetup() 方法") 中的 cache 和 ifModified 選項不會影響這些請求。
注釋:由于瀏覽器安全方面的限制,大多數 "Ajax" 請求遵守同源策略;請求無法從不同的域、子域或協議成功地取回數據。
注釋:如果由 jQuery.post() 發起的請求返回錯誤代碼,那么不會有任何提示,除非腳本已調用了全局的 [.ajaxError() 方法](/jquery/ajax_ajaxerror.asp "jQuery ajax - ajaxError() 方法")。或者對于 jQuery 1.5,jQuery.post() 返回的 jqXHR 對象的 .error() 方法也可以用于錯誤處理。
## jqXHR 對象
對于 jQuery 1.5,所有 jQuery 的 AJAX 方法返回的是 XMLHTTPRequest 對象的超集。由 $.post() 返回的 jQuery XHR 對象或 "jqXHR,"實現了約定的接口,賦予其所有的屬性、方法,以及約定的行為。出于對由 [$.ajax()](/jquery/ajax_ajax.asp "jQuery ajax - 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: "John", 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: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
```
### 例子 6
獲得 test.php 頁面的內容,并存儲為 XMLHttpResponse 對象,并通過 process() 這個 JavaScript 函數進行處理:
```
$.post("test.php", { name: "John", time: "2pm" },
function(data){
process(data);
}, "xml");
```
### 例子 7
獲得 test.php 頁面返回的 json 格式的內容:
```
$.post("test.php", { "func": "getNameAndTime" },
function(data){
alert(data.name); // John
console.log(data.time); // 2pm
}, "json");
```
- jQuery 參考手冊 - 選擇器
- jQuery 參考手冊 - 事件
- jQuery 事件 - bind() 方法
- jQuery 事件 - blur() 方法
- jQuery 事件 - change() 方法
- jQuery 事件 - click() 方法
- jQuery 事件 - dblclick() 方法
- jQuery 事件 - delegate() 方法
- jQuery 事件 - die() 方法
- jQuery 事件 - error() 方法
- jQuery 事件 - isDefaultPrevented() 方法
- jQuery 事件 - pageX 屬性
- jQuery 事件 - pageY 屬性
- jQuery 事件 - preventDefault() 方法
- jQuery 事件 - result 屬性
- jQuery 事件 - target 屬性
- jQuery 事件 - timeStamp 屬性
- jQuery 事件 - type 屬性
- jQuery 事件 - which 屬性
- jQuery 事件 - focus() 方法
- jQuery 事件 - keydown() 方法
- jQuery 事件 - keypress() 方法
- jQuery 事件 - keyup() 方法
- jQuery 事件 - live() 方法
- jQuery 事件 - load() 方法
- jQuery 事件 - mousedown() 方法
- jQuery 事件 - mouseenter() 方法
- jQuery 事件 - mouseleave() 方法
- jQuery 事件 - mousemove() 方法
- jQuery 事件 - mouseout() 方法
- jQuery 事件 - mouseover() 方法
- jQuery 事件 - mouseup() 方法
- jQuery 事件 - one() 方法
- jQuery 事件 - ready() 方法
- jQuery 事件 - resize() 方法
- jQuery 事件 - scroll() 方法
- jQuery 事件 - select() 方法
- jQuery 事件 - submit() 方法
- jQuery 事件 - toggle() 方法
- jQuery 事件 - trigger() 方法
- jQuery 事件 - triggerHandler() 方法
- jQuery 事件 - unbind() 方法
- jQuery 事件 - undelegate() 方法
- jQuery 事件 - unload 屬性
- jQuery 參考手冊 - 效果
- jQuery 效果 - animate() 方法
- jQuery 效果 - clearQueue() 方法
- jQuery 效果 - fadeIn() 方法
- jQuery 效果 - fadeOut() 方法
- jQuery 效果 - fadeTo() 方法
- jQuery 效果 - hide() 方法
- jQuery 效果 - show() 方法
- jQuery 效果 - slideDown() 方法
- jQuery 效果 - slideToggle() 方法
- jQuery 效果 - slideUp() 方法
- jQuery 效果 - stop() 方法
- jQuery 效果 - toggle() 方法
- jQuery 參考手冊 - 文檔操作
- jQuery 屬性操作 - addClass() 方法
- jQuery 文檔操作 - after() 方法
- jQuery 文檔操作 - append() 方法
- jQuery 文檔操作 - appendTo() 方法
- jQuery 屬性操作 - attr() 方法
- jQuery 文檔操作 - before() 方法
- jQuery 文檔操作 - clone() 方法
- jQuery 文檔操作 - detach() 方法
- jQuery 文檔操作 - empty() 方法
- jQuery 屬性操作 - hasClass() 方法
- jQuery 文檔操作 - html() 方法
- jQuery 文檔操作 - insertAfter() 方法
- jQuery 文檔操作 - insertBefore() 方法
- jQuery 文檔操作 - prepend() 方法
- jQuery 文檔操作 - prependTo() 方法
- jQuery 文檔操作 - remove() 方法
- jQuery 屬性操作 - removeAttr() 方法
- jQuery 屬性操作 - removeClass() 方法
- jQuery 文檔操作 - replaceAll() 方法
- jQuery 文檔操作 - replaceWith() 方法
- jQuery 文檔操作 - text() 方法
- jQuery 屬性操作 - toggleClass() 方法
- jQuery 文檔操作 - unwrap() 方法
- jQuery 屬性操作 - val() 方法
- jQuery 文檔操作 - wrap() 方法
- jQuery 文檔操作 - wrapAll() 方法
- jQuery 文檔操作 - wrapInner() 方法
- jQuery 參考手冊 - 屬性操作
- jQuery 參考手冊 - CSS 操作
- jQuery CSS 操作 - css() 方法
- jQuery CSS 操作 - height() 方法
- jQuery CSS 操作 - offset() 方法
- jQuery CSS 操作 - offsetParent() 方法
- jQuery CSS 操作 - position() 方法
- jQuery CSS 操作 - scrollLeft() 方法
- jQuery CSS 操作 - scrollTop() 方法
- jQuery CSS 操作 - width() 方法
- jQuery 參考手冊 - Ajax
- jQuery ajax - ajax() 方法
- jQuery ajax - ajaxComplete() 方法
- jQuery ajax - ajaxError() 方法
- jQuery ajax - ajaxSend() 方法
- jQuery ajax - ajaxSetup() 方法
- jQuery ajax - ajaxStart() 方法
- jQuery ajax - ajaxStop() 方法
- jQuery ajax - ajaxSuccess() 方法
- jQuery ajax - get() 方法
- jQuery ajax - getJSON() 方法
- jQuery ajax - getScript() 方法
- jQuery ajax - load() 方法
- jQuery ajax - param() 方法
- jQuery ajax - post() 方法
- jQuery ajax - serialize() 方法
- jQuery ajax - serializeArray() 方法
- jQuery 參考手冊 - 遍歷
- jQuery 遍歷 - add() 方法
- jQuery 遍歷 - andSelf() 方法
- jQuery 遍歷 - children() 方法
- jQuery 遍歷 - closest() 方法
- jQuery 遍歷 - contents() 方法
- jQuery 遍歷 - each() 方法
- jQuery 遍歷 - end() 方法
- jQuery 遍歷 - eq() 方法
- jQuery 遍歷 - filter() 方法
- jQuery 遍歷 - find() 方法
- jQuery 遍歷 - first() 方法
- jQuery 遍歷 - has() 方法
- jQuery 遍歷 - is() 方法
- jQuery 遍歷 - last() 方法
- jQuery 遍歷 - map() 方法
- jQuery 遍歷 - next() 方法
- jQuery 遍歷 - nextAll() 方法
- jQuery 遍歷 - nextUntil() 方法
- jQuery 遍歷 - not() 方法
- jQuery 遍歷 - offsetParent() 方法
- jQuery 遍歷 - parent() 方法
- jQuery 遍歷 - parents() 方法
- jQuery 遍歷 - parentsUntil() 方法
- jQuery 遍歷 - prev() 方法
- jQuery 遍歷 - prevAll() 方法
- jQuery 遍歷 - prevUntil() 方法
- jQuery 遍歷 - siblings() 方法
- jQuery 遍歷 - slice() 方法
- jQuery 參考手冊 - 數據
- jQuery 遍歷 - clearQueue() 方法
- jQuery 數據 - data() 方法
- jQuery 數據 - jQuery.data() 方法
- jQuery 遍歷 - dequeue() 方法
- jQuery 遍歷 - jQuery.dequeue() 方法
- jQuery 遍歷 - hasData() 方法
- jQuery 遍歷 - queue() 方法
- jQuery 遍歷 - jQuery.queue() 方法
- jQuery 數據 - removeData() 方法
- jQuery 數據 - jQuery.removeData() 方法
- jQuery 參考手冊 - DOM 元素方法
- jQuery DOM 元素方法 - get() 方法
- jQuery DOM 元素方法 - index() 方法
- jQuery DOM 元素方法 - size() 方法
- jQuery DOM 元素方法 - toArray() 方法
- jQuery 參考手冊 - 核心
- jQuery 核心 - jQuery() 方法
- jQuery 核心 - noConflict() 方法
- jQuery 參考手冊 - 屬性
- jQuery context 屬性
- jQuery jquery 屬性
- jQuery jQuery.fx.interval 屬性
- jQuery jQuery.fx.off 屬性
- jQuery jQuery.support 屬性
- jQuery length 屬性
- 免責聲明