Ajax 請求javascript
執行Ajax請求。它能夠是本地資源,或者經過支持HTTP access control的瀏覽器 或者經過 JSONP來實現跨域。css
<script src="./lib/src/ajax.js"></script>
$.ajax(options) // ⇒ XMLHttpRequest { setRequestHeader: $.ajax/setHeader(), onreadystatechange: $.ajax/xhr.onreadystatechange(), readyState: 1, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "", status: 0, statusText: "", responseType: "" }html
若是URL中含有 =?或者dataType是「jsonp」,這講求將會經過注入一個
<script>
標籤來代替使用 XMLHttpRequest (查看 JSONP)。此時 contentType, dataType, headers有限制,async 不被支持。java
你能夠指定如下的回調函數,他們將按給定的順序執行:ajax
若是可選的「callbacks」 和 「deferred」 模塊被加載,從$.ajax()返回的XHR對象實現了promise接口鏈式的回調:json
xhr.done(function(data, status, xhr){ ... }) xhr.fail(function(xhr, errorType, error){ ... }) xhr.always(function(){ ... })
這些方法取代了 success, error, 和 complete 回調選項.跨域
當global: true時。在Ajax請求生命週期內,如下這些事件將被觸發。數組
默認狀況下,Ajax事件在document對象上觸發。然而,若是請求的 context 是一個DOM節點,該事件會在此節點上觸發而後再DOM中冒泡。惟一的例外是 ajaxStart & ajaxStop這兩個全局事件。promise
$.ajaxJSONP(options) ⇒ mock XMLHttpRequest瀏覽器
執行JSONP跨域獲取數據。
此方法相對 $.ajax 沒有優點,建議不要使用。
一個包含Ajax請求的默認設置的對象。大部分的設置在 $.ajax中已經描述。如下設置爲全局很是有用:
timeout
(默認: 0):對Ajax請求設置一個非零的值指定一個默認的超時時間,以毫秒爲單位。global
(默認: true):設置爲false。以防止觸發Ajax事件。xhr
(默認:XMLHttpRequest factory):設置爲一個函數,它返回XMLHttpRequest實例(或一個兼容的對象)accepts
: 從服務器請求的MIME類型,指定dataType
值:
$.get(url, function(data, status, xhr){ ... }) ⇒ XMLHttpRequest $.get(url, [data], [function(data, status, xhr){ ... }], [dataType]) ⇒ XMLHttpRequest v1.0+
執行一個Ajax GET請求。這是一個 $.ajax的簡寫方式。
$.get('/whatevs.html', function (response) { $(document.body).append(response) })
$.getJSON(url, function(data, status, xhr){ ... }) ⇒ XMLHttpRequest $.getJSON(url, [data], function(data, status, xhr){ ... }) ⇒ XMLHttpRequest v1.0+
經過 Ajax GET請求獲取JSON數據。這是一個 $.ajax 的簡寫方式。
$.getJSON('/awesome.json', function (data) { console.log(data) }) // 從另外一個域的JSONP獲取數據 $.getJSON('//example.com/awesome.json?callback=?', function (remoteData) { console.log(remoteData) })
$.param(object, [shallow]) ⇒ string $.param(array) ⇒ string
序列化一個對象,在Ajax請求中提交的數據使用URL編碼的查詢字符串表示形式。若是shallow設置爲true。嵌套對象不會被序列化,嵌套數組的值不會使用放括號在他們的key上。
此外,還接受 serializeArray格式的數組,其中每一個項都有 「name」 和 「value」屬性。
$.param({foo: {one: 1, two: 2}}) //=> "foo[one]=1&foo[two]=2)" $.param({ids: [1, 2, 3]}) //=> "ids[]=1&ids[]=2&ids[]=3" $.param({ids: [1, 2, 3]}, true) //=> "ids=1&ids=2&ids=3" $.param({foo: 'bar', nested: {will: 'not be ignored'}}) //=> "foo=bar&nested[will]=not+be+ignored" $.param({foo: 'bar', nested: {will: 'be ignored'}}, true) //=> "foo=bar&nested=[object+Object]"
$.post(url, [data], function(data, status, xhr){ ... }, [dataType]) ⇒ XMLHttpRequest
執行Ajax POST請求。這是一個 $.ajax 的簡寫方式。
$.post('/create', {sample: 'payload'}, function (response) { // process response })
data 參數能夠是一個字符串:
$.post('/create', $('#some_form').serialize(), function (response) { // ... })
load(url, function(data, status, xhr){ ... }) ⇒ self
經過GET Ajax載入遠程 HTML 內容代碼並插入至 當前的集合 中。另外,一個css選擇器能夠在url中指定,像這樣,可使用匹配selector選擇器的HTML內容來更新集合。
$('#some_element').load('/foo.html #bar')
若是沒有給定CSS選擇器,將使用完整的返回文本。
請注意,在沒有選擇器的狀況下,任何javascript塊都會執行。若是帶上選擇器,匹配選擇器內的script將會被刪除。