jQuery的ajax詳解


jQuery內部也封裝了對原生ajax請求的方法,可以很方便我們的對后台異步請求處理。

$.get()方法

語法:jQuery.get( url [, data ] [, success ] [, dataType ] )

  • url 請求的后台地址
  • data 傳遞的參數
  • success 成功的回調, function(PlainObject data, String textStatus, jqXHR jqXHR )
  • dataType 預期后台返回數據的類型,默認會自動智能判斷(xml, json, script, text, html)
$.get('/user.json', function(data) { console.log(data); }); $.get('/user.json', 'id=1', function (data, status, jsXHR) { console.log(data.id); }, 'json'); 

$.post()方法

語法: jQuery.post( url [, data ] [, success ] [, dataType ] )

用法跟get基本一致。列子:

$.post('/api/user', {id: 3, name: 234}, function(data, status, jsXHR) { console.log(data); }); 

$.ajax()方法

語法1: jQuery.ajax( [settings ] )

settings 是一個普通的對象。可以有如下設置:

  • async 類型:Boolean

默認值: true。默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。

注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。

  • beforeSend(XHR) 類型:Function

發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。

XMLHttpRequest 對象是唯一的參數。

這是一個 Ajax 事件。如果返回 false 可以取消本次 ajax 請求。

  • cache 類型:Boolean

默認值: true,dataType 為 script 和 jsonp 時默認為 false。設置為 false 將不緩存此頁面。

  • contentType 類型:String

默認值: "application/x-www-form-urlencoded"。發送信息至服務器時內容編碼類型。

  • data 類型:String

發送到服務器的數據。將自動轉換為請求字符串格式。GET 請求中將附加在 URL 后。查看 processData 選項說明以禁止此自動轉換。必須為 Key/Value 格式。如果為數組,jQuery 將自動為不同值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換為 '&foo=bar1&foo=bar2'。

  • dataType 類型:String
    預期服務器返回的數據類型。 (xml、html、script、json、jsonp、text)。jq會將自動根據 HTTP 包 MIME 信息來智能判斷,比如 XML MIME 類型就被識別為 XML。

  • error 類型:Function

默認值: 自動判斷 (xml 或 html)。請求失敗時調用此函數。

有以下三個參數:XMLHttpRequest 對象、錯誤信息、(可選)捕獲的異常對象。

如果發生了錯誤,錯誤信息(第二個參數)除了得到 null 之外,還可能是 "timeout", "error", "notmodified" 和 "parsererror"。

  • success 類型:Function

請求成功后的回調函數。

參數:由服務器返回,並根據 dataType 參數進行處理后的數據;描述狀態的字符串。

這是一個 Ajax 事件。

  • type 類型:String

默認值: "GET")。請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。

  • url 類型:String

默認值: 當前頁地址。發送請求的地址。

  • jsonp 類型:String

在一個 jsonp 請求中重寫回調函數的名字。這個值用來替代在 "callback=?" 這種 GET 或 POST 請求中 URL 參數里的 "callback" 部分,比如 {jsonp:'onJsonPLoad'} 會導致將 "onJsonPLoad=?" 傳給服務器。

  • jsonpCallback 類型:String

為 jsonp 請求指定一個回調函數名。這個值將用來取代 jQuery 自動生成的隨機函數名。這主要用來讓 jQuery 生成度獨特的函數名,這樣管理請求更容易,也能方便地提供回調函數和錯誤處理。你也可以在想讓瀏覽器緩存 GET 請求的時候,指定這個回調函數名。

語法2:jQuery.ajax( url [, settings ] )

$.ajax({
  url: 'user.json', data: 'id=3', type: 'GET', success: function(data) { console.log(data); } }); 

$.getJSON()

語法: jQuery.getJSON( url [, data ] [, success ] )

用法類似於get,但是返回的數據類型自動轉換為json對象。

此方法,支持JSONP的調用。如果url中包含了callback=?或者后台要求的callback參數,那么此方法自動轉換成jsonp的調用模式。

$.getJSON('user.json', function(data) { console.log(data.id); }); 

jQuery.getScript()方法

執行后台的請求,並下載js腳本,下載完成后,自動執行。
語法: jQuery.getScript( url [, success ] )

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) { console.log( data ); // Data returned console.log( textStatus ); // Success console.log( jqxhr.status ); // 200 console.log( "Load was performed." ); }); 

load()方法

從后台下載html內容,下載完成后替換到選擇元素的內部。

語法:$(selector).load( url [, data ] [, complete ] )

$('.box').load('/user/list', {}, function(data) {});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM