AJAX简单介绍
来源:互联网 发布:条形码集中打印软件 编辑:程序博客网 时间:2024/04/29 12:02
一、简介
AJAX 即 “Asynchronous JavaScript and XML ”( 异步 JavaScript 和 XML) ,AJAX 并非缩写词 , 而是由 Jesse James Gaiiett 创造的名词 , 是指一种创建交互式 网页 应用的网页开发技术。
二、同步和异步的区别
同步 :提交请求 -> 等待服务器处理 -> 处理完毕返回这个期间客户端浏览器不能干任何事
同步是指:发送方发出数据后,等接收方发回响应以后才发下一数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数 据包的通讯方式
三、AJAX原理
1. Ajax 的核心是 JavaScript 对象 XmlHttpRequest
2. AJAX 采用异步交互过程
AJAX 引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。现在,可以用Javascript 调用 AJAX 引擎来代替产生一个 HTTP 的用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给 AJAX 来执行
3.XMLHttpRequest 对象
创建 XMLHttpRequest 对象(由于非标准所以实现方法不统一)
(1)Internet Explorer 把 XMLHttpRequest 实现为一个 ActiveX 对象
(2) 其他浏器 (Firefox 、 Safari 、 Opera …) 把它实现为一个本地JavaScript 对象。、(3)XMLHttpRequest 在不同浏览器上的实现是兼容的,所以可以用同样的方式访问 XMLHttpRequest 实例的属性和方法,而不论这个实例创建的方法是什么。
var xmlhttp = null;var url = "/cgi-bin/_cgi2.cgi?";url += sendData;if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}4.XMLHttpRequest 对象方法
方法
描述
abort()
停止当前请求
getAllResponseHeaders()
把 http 请求的所有响应首部作为键 / 值对返回
getResponseHeader("headerLabel")
返回指定首部的串值
open(method,url,async)
规定请求的类型、 URL 以及是否异步处理请求。
method : 请求的类型; GET 或 POST
url : 文件在服务器上的位置
async :true ( 异步)或 false(同步)
send(content)
向服务器发送请求
setRequestHeader("label", "value")
把指定首部设置为所提供的值。在设置任何首部之前必须先调用 open()5.XMLHttpRequest 对象属性
属性
描述
onreadystatechange
存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪status
200: "OK" 404: 未找到页面
responseText
获得字符串形式的响应数据。
responseXML
获得 XML 形式的响应数据
四、发送请求方法与属性的介绍
利用 XMLHttpRequest 实例与服务器进行通信包含以下 3 个关键部分
onreadystatechange 事件处理函数、 open 方法和 send 方法
(1) .onreadystatechange= funtion()该事件处理函数由服务器触发,而不是用户
在 Ajax 执行过程中,服务器会通知客户端当前的通信状态。这依靠更新 XMLHttpRequest 对象的readyState 来实现 , 改变 readyState属性是服务器对客户端连接操作的一种方式。
注意:每次 readyState 属性的改变都会触发 readystatechange 事件
(3).send(data)
open 方法定义了 Ajax 请求的一些细节。 send 方法可为已经待命的请求发送指令
data :将要传递给服务器的字符串。
若选用的是 GET 请求 , 则不会发送任何数据 , 给 send 方法传递 null 即可 :xmlhttp.send(null)
当向 send() 方法提供参数时,要确保 open() 中指定的方法是 POST ,如果没有数据作为请求体的一部分发送,则使用 null.
该方法必须在 open() 之后才能调用
(5) 发送请求get 与post 的区别总结
发送请求 : 如果是get 请求send( 参数) 参数:必须是null 或者xmlhttp.send();
get 请求就不必要设置 xhr.setRequestHeader(header,value)
备注:如果xhr.send( 参数); 参数不为空情况下, 会自动转换成post 请求方式 您可以通过request.getMethod(); 方法获取请求的方式
发送请求 : 如果是post 请求send( 参数) 参数:参数可以是null 或 者xhr.send()|send( 带有参数的)post 请求在传递值的情况下必须 设置 xhr.setRequestHeader(header,value)
(2) .open(method, url, asynch)
method : 请求类型,类似 “ GET ” 或” POST ” 的字符串。若只想从服务器检索一个文件,而不需要发送任何数据,使用 GET( 可以在 GET 请求里通过附加在 URL 上的查询字符串来发送数据,不过数据大小限制为 2000 个字符 ) 。若需要向服务器发送数据,用 POST 。
url : 路径字符串,指向你所请求的服务器上的那个文件。可以是绝对路径或相对路径。
asynch : 表示请求是否要异步传输,默认值为 true( 异步 ) 。指定 true ,在读取后面的脚本之前,不需要等待服务器的相应。指定 false ,当脚本处理过程经过这点时,会停下来,一直等到 Ajax 请求执行完毕再继续执行。
在某些情况下,有些浏览器会把多个 XMLHttpRequest 请求的结果缓存在同一个 URL 。如果对每个请求的响应不同,这就会带来不好的结果。把当前时间戳追加到 URL 的最后,就能确保 URL 的惟一性,从而避免浏览器缓存结果 。
(4).setRequestHeader(header,value)
参数 header : 首部的名字
参数 value : 首部的值
如果用 POST 请求向服务器发送数据 , 需要将 “Content-type ” 的首部设置为 “application/x-www-form-urlencoded ” 它会告知服务器正在发送数据 , 并且数据已经符合 URL 编码了。
五、实例
function xmlhttpfun(){var xmlhttp = null;if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}}/* 建立对服务器的请求GET: 通过"GET"方法,还有"POST"ajax_demo.txt: url路径,相对路径或者绝对路径true,异步;false,同步 */xmlhttp.open("GET", "ajax_demo.txt", true);xmlhttp.setRequestHeader("If-Modified-Since", "0");//xmlhttp.send(); // 向服务器发送请求,先open(),才能再调用send();}
- Ext.Ajax简单介绍
- Ajax的简单介绍
- AJAX简单使用介绍
- AJAX简单使用介绍
- AJAX简单介绍
- Ajax的简单介绍
- ajax的简单介绍,
- AJAX简单使用介绍
- AJAX简单使用介绍
- ajax简单介绍
- 简单介绍一下AjAx
- ASP.NET AJAX 简单介绍
- Anthem AJAX框架简单介绍
- Ajax介绍和简单示例
- Ajax的简单用法介绍
- JQuery ajax方法简单介绍
- Ajax简单介绍及使用
- 关于ajax 的简单介绍
- 【BZOJ2803】【Poi2012】Prefixuffix hash+推性质
- 与TTL兼容的施密特触发器电路
- 无法定位程序输入点GdipGetImageGraphicsContext于动态链接库libvlc.dll上
- Android:客户端和服务器之间传输数据加密
- iscroll的一些基本的使用,网上找的有很多
- AJAX简单介绍
- C#连接数据库
- 微信开发开发技巧汇总(学习柳峰老师微信开发笔记)
- [LeetCode]Substring with Concatenation of All Words
- centos 安装openfire
- leetcode之 median of two sorted arrays
- nyoj-1167-阅读理解(筛法+打表)
- 实现mfc进程和qt进程之间的通信
- 写一个浮框固定在页面,单击可以消失