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将会被删除。