Ajax 请求

执行Ajax请求。它可以是本地资源,或者通过支持HTTP access control的浏览器 或者通过 JSONP来实现跨域。

引入Ajax模块

<script src="./lib/src/ajax.js"></script>

$.ajax

语法

$.ajax(options) // ⇒ XMLHttpRequest { setRequestHeader: $.ajax/setHeader(), onreadystatechange: $.ajax/xhr.onreadystatechange(), readyState: 1, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "", status: 0, statusText: "", responseType: "" }

选项:

  • type(默认: “GET”):请求方法 (“GET”, “POST”, or other)
  • url (默认: 当前地址):发送请求的地址
  • data (默认:none):发送到服务器的数据;如果是GET请求,它会自动被作为参数拼接到url上。非String对象将通过 $.param 得到序列化字符串。
  • processData (默认: true): 对于非Get请求。是否自动将 data 转换为字符串。
  • contentType (默认: “application/x-www-form-urlencoded”): 发送信息至服务器时内容编码类型。 (这也可以通过设置 headers)。通过设置 false 跳过设置默认值。
  • mimeType (默认: none): 覆盖响应的MIME类型。 v1.1+
  • dataType (默认: none):预期服务器返回的数据类型(“json”, “jsonp”, “xml”, “html”, or “text”)
  • jsonp (默认:“callback”): JSONP回调查询参数的名称
  • jsonpCallback (默认: “jsonp{N}”): 全局JSONP回调函数的 字符串(或返回的一个函数)名。设置该项能启用浏览器的缓存。 v1.1+
  • timeout (默认: 0): 以毫秒为单位的请求超时时间, 0 表示不超时。
  • headers: Ajax请求中额外的HTTP信息头对象
  • async (默认:true): 默认设置下,所有请求均为异步。如果需发送同步请求,请将此设置为 false。
  • global (默认:true): 请求将触发全局Ajax事件处理程序,设置为 false 将不会触发全局 Ajax 事件。
  • context (默认:window): 这个对象用于设置Ajax相关回调函数的上下文(this指向)。
  • traditional (默认: false): 激活传统的方式通过$.param来得到序列化的 data。
  • cache (默认: true): 浏览器是否应该被允许缓存GET响应
  • xhrFields (默认: none): 一个对象包含的属性被逐字复制到XMLHttpRequest的实例。 v1.1+
  • username & password (默认: none): HTTP基本身份验证凭据。 v1.1+

如果URL中含有 =?或者dataType是“jsonp”,这讲求将会通过注入一个 <script>标签来代替使用 XMLHttpRequest (查看 JSONP)。此时 contentType, dataType, headers有限制,async 不被支持。

Ajax 回调函数

你可以指定以下的回调函数,他们将按给定的顺序执行:

  • beforeSend(xhr, settings):请求发出前调用,它接收xhr对象和settings作为参数对象。如果它返回 false ,请求将被取消。
  • success(data, status, xhr):请求成功之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • error(xhr, errorType, error):请求出错时调用。 (超时,解析错误,或者状态码不在HTTP 2xx)。
  • complete(xhr, status):请求完成时调用,无论请求失败或成功。

Promise 回调接口 v1.1+

如果可选的“callbacks” 和 “deferred” 模块被加载,从$.ajax()返回的XHR对象实现了promise接口链式的回调:

xhr.done(function(data, status, xhr){ ... })
xhr.fail(function(xhr, errorType, error){ ... })
xhr.always(function(){ ... })

这些方法取代了 success, error, 和 complete 回调选项.

Ajax 事件

当global: true时。在Ajax请求生命周期内,以下这些事件将被触发。

  • ajaxStart (global):如果没有其他Ajax请求当前活跃将会被触发。
  • ajaxBeforeSend (data: xhr, options):再发送请求前,可以被取消。
  • ajaxSend (data: xhr, options):像 ajaxBeforeSend,但不能取消。
  • ajaxSuccess (data: xhr, options, data):当返回成功时。
  • ajaxError (data: xhr, options, error):当有错误时。
  • ajaxComplete (data: xhr, options):请求已经完成后,无论请求是成功或者失败。
  • ajaxStop (global):如果这是最后一个活跃着的Ajax请求,将会被触发。

默认情况下,Ajax事件在document对象上触发。然而,如果请求的 context 是一个DOM节点,该事件会在此节点上触发然后再DOM中冒泡。唯一的例外是 ajaxStart & ajaxStop这两个全局事件。

$.ajaxJSONP

$.ajaxJSONP(options) ⇒ mock XMLHttpRequest

执行JSONP跨域获取数据。

此方法相对 $.ajax 没有优势,建议不要使用。

$.ajaxSettings

一个包含Ajax请求的默认设置的对象。大部分的设置在 $.ajax中已经描述。以下设置为全局非常有用:

  • timeout (默认: 0):对Ajax请求设置一个非零的值指定一个默认的超时时间,以毫秒为单位。
  • global (默认: true):设置为false。以防止触发Ajax事件。
  • xhr (默认:XMLHttpRequest factory):设置为一个函数,它返回XMLHttpRequest实例(或一个兼容的对象)
  • accepts: 从服务器请求的MIME类型,指定dataType值:
    • script: “text/javascript, application/javascript”
    • json: “application/json”
    • xml: “application/xml, text/xml”
    • html: “text/html”
    • text: “text/plain”

$.get

$.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

$.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

$.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

$.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

load(url, function(data, status, xhr){ ... }) ⇒ self

通过GET Ajax载入远程 HTML 内容代码并插入至 当前的集合 中。另外,一个css选择器可以在url中指定,像这样,可以使用匹配selector选择器的HTML内容来更新集合。

$('#some_element').load('/foo.html #bar')

如果没有给定CSS选择器,将使用完整的返回文本。

请注意,在没有选择器的情况下,任何javascript块都会执行。如果带上选择器,匹配选择器内的script将会被删除。

Zepto.js-Ajax 请求的更多相关文章

  1. js ajax请求传token

    js  ajax请求传token 方法一: headers: { Authorization: "BasicAuth " + token } 方法二: beforeSend: fu ...

  2. 当跨域时,js ajax 请求出现options请求

    上面有文章说过http的options. 查了很久.试了很多版本的jQuery,下面这段代码在同事的机子上测试是没有问题的.正常 的请求, 一在我机子上面就会出现option,网上说先向服务器预检等. ...

  3. [JS] Ajax请求会话过期处理

    对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可. 对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码. ...

  4. 使用js+Ajax请求API接口数据-带请求头方式

    C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...

  5. js ajax 请求

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. JS ajax请求参数格式( formData 、serialize)

    $("#importBtn").click(function(){ if($("#conId").val() == ""){ alert(& ...

  7. 原生js ajax请求

    什么是ajax AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新, ...

  8. js ajax请求

    var XMLHttpReq; function createXMLHttpRequest() { try { XMLHttpReq = new ActiveXObject("Msxml2. ...

  9. 原生JS Ajax 请求

    var username = document.getElementById('username').value; var password = document.getElementById('pa ...

  10. 纯js Ajax 请求

    var XMLHttpReq; function createXMLHttpRequest() { if(window.ActiveXObject ) { try { XMLHttpReq = new ...

随机推荐

  1. angula组件-通过键盘实现多选(原创)

    在刚刚结束的angular交易系统项目中有几个需求是让我感觉要花点时间的 如何更优雅的使用angular-bootstrap 的 Modal框. 通过键盘实现ctrl多选,shfit批量选的功能. 如 ...

  2. Android--->Button按钮操作

    main.xml中设置两个按钮 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...

  3. cc2530 T3定时器控制引脚P1_1的亮灭

    /**************************************************************************** * 文 件 名: main.c * 作 者: ...

  4. CodeForces 158DIce Sculptures(枚举)

    一个暴力的枚举,枚举组成正多边形需要对应覆盖原先的几条边,范围为(1,n/3),然后维护最大值就可以了,注意初始化为-inf. #include<stdio.h> #include< ...

  5. HDU 1711 Number Sequence(KMP匹配数字串)

    这个就是kmp的数组形式,不用来处理字符串还真有点不习惯呢... #include<iostream> using namespace std; ,MAXM = ; int T[MAXN] ...

  6. DWR整合之JSF

    DWR 与 JSF DWR 包括两个 JSF 的扩展点,一个创造器和一个 ServletFilter. 1.JSF Creator DWR1.1 中有一个体验版的 JsfCreator.你可以在 dw ...

  7. Use View.isInEditMode() in your custom views to skip code when shown in Eclipse

    今天在做自定义ViewGroup中,出现了一下错误提示Use View.isInEditMode() in your custom views to skip code when shown in E ...

  8. js url编码函数

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...

  9. phpmailer 的使用

    [转载]http://blog.csdn.net/liruxing1715/article/details/7914974 <?php header('Content-Type:text/htm ...

  10. 什么是j2ee ??EJB与j2ee的关系?? 请看百度百科

    首先,EJB是j2ee的一部分. http://baike.baidu.com/link?url=SGmNOVWoaZ62WCjb7a_yzz-GBGsDT3jyFM1hsvv8ycAwusdmo_D ...