ajax过程
2015-07-02 14:02
211 查看
一个完整的Ajax过程如下:
创建XMLHttpRequest对象
通过上一步创建的XMLHttpRequest对象,打开一个连接
绑定事件,对获取到的数据进行处理。一般为请求成功后的回调函数
发送该请求
根据上面的步骤进行简单的描述:
1. 对于不同的浏览器,创建一个能发起Ajax请求对象的方式不一样。 现代浏览器通过内嵌的XMLHttpRequest()对象即可实现,而老的浏览器(IE6/IE6-)则需要通过一个ActiveX对象来创建。
2. 打开一个到远程对象的请求,需要通过XHR的open()方法实现。语法:
open(method, url, async, user, password)
其中:
method可以取值为GET、POST、HEAD、PUT、DELETE、OPTIONS,前二者是常用的。
url为请求的远程接口
async为布尔值,是否需要异步处理请求,默认为true
如果此接口需要用户名和密码,可附上,不过这样就暴露了
3. 通过监控readystatechange事件,判断数据是否请求完成,并进行相关处理。其状态值可以通过readyState获取,有如下5种状态:
0: XHR对象未初始化
1: XHR对象已经建立,但还未发送
2: 已调用send(),请求已发送
3: 已接收到数据,正在处理中
4: 数据接收并处理完成,可以使用了
4. send()方法用于发送请求,若是POST方式,可以将需要传送的数据作为参数发送,形如send(data),但此时需要先设置XMLHttpRequest请求头的Content-Type为application/x-www-form-urlencoded。
一个简单的Ajax示例:
创建XMLHttpRequest对象
通过上一步创建的XMLHttpRequest对象,打开一个连接
绑定事件,对获取到的数据进行处理。一般为请求成功后的回调函数
发送该请求
根据上面的步骤进行简单的描述:
1. 对于不同的浏览器,创建一个能发起Ajax请求对象的方式不一样。 现代浏览器通过内嵌的XMLHttpRequest()对象即可实现,而老的浏览器(IE6/IE6-)则需要通过一个ActiveX对象来创建。
2. 打开一个到远程对象的请求,需要通过XHR的open()方法实现。语法:
open(method, url, async, user, password)
其中:
method可以取值为GET、POST、HEAD、PUT、DELETE、OPTIONS,前二者是常用的。
url为请求的远程接口
async为布尔值,是否需要异步处理请求,默认为true
如果此接口需要用户名和密码,可附上,不过这样就暴露了
3. 通过监控readystatechange事件,判断数据是否请求完成,并进行相关处理。其状态值可以通过readyState获取,有如下5种状态:
0: XHR对象未初始化
1: XHR对象已经建立,但还未发送
2: 已调用send(),请求已发送
3: 已接收到数据,正在处理中
4: 数据接收并处理完成,可以使用了
4. send()方法用于发送请求,若是POST方式,可以将需要传送的数据作为参数发送,形如send(data),但此时需要先设置XMLHttpRequest请求头的Content-Type为application/x-www-form-urlencoded。
一个简单的Ajax示例:
jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象。 $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。java培训的老师讲过这个比较好用,所以推荐使用jquery的ajax详细参数选项见下。 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。 实例: 保存数据到服务器,成功时显示信息。 $.ajax({ type: "post", dataType: "html", url: '/Resources/GetList.ashx', data: dataurl, success: function (data) { if (data != "") { $("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$$")[1], buttonClickCallback: PageClick }); $("#anhtml").html(data.split("$$")[0]); } } }); 2.通过远程 HTTP GET 请求载入信息。 这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。 实例: $.get("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); }); 3. 通过远程 HTTP POST 请求载入信息。 这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。 实例: $.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) { if (data == "ok") { alert("添加成功!"); } })4.通过 HTTP GET 请求载入 JSON 数据。 实例: $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); });
相关文章推荐
- windows下删除文件时提示“操作无法完成 因为文件已在。。。”解决方案
- Building an MFC project for a non-Unicode character set is deprecated
- [技巧篇]07.JSON.parse() 和 JSON.stringify()
- Android编译过程详解(一)
- iOS--cell的重用机制
- DBArtisan 连接oracle数据库 和sybase 数据库
- HDU 1892 See you~ 【 二维树状数组 】
- 去中介化 租房O2O是做局还是作死?
- 哈希取余法、哈希表大小取质数的问题
- Linux/Ubuntu下C编程基本
- Log4j输出格式参数一览
- 编译android源码遇到的问题use BUILD_PREBUILT instead
- [前端] 内容拉伸(拖拽效果)
- Windows 与 Ubuntu 之间的文件共享——搭建Samba服务器
- js 事件监听,执行某操作
- Hibernate的10个常见面试问题及答案
- MAC 删除arp缓存的命令 arp -ad
- Android WebView中的JavaScript代码使用
- Hibernate操作Clob数据类型
- intent-filter 之 data 「scheme, host, port, mimeType, path, pathPrefix, path