定义和用法:
Ajax 是一种用于创建快速动态网页的技术。Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
优点:
1.无刷新更新数据
2.异步与服务器通信
3.前端与后端负载均衡,将一些后端的工作移到前端,减少服务器与带宽的负担
4.基于规范被广泛支持,不下载浏览器插件或小程序,要客户允许JavaScript在浏览器上执行
5.界面与应用分离,也就是数据与呈现分离,减少错误,提高效率。
缺点:
1.Ajax干掉了Back与History功能,即对浏览器机制的破坏,AJAX只是局部刷新,所以页面的后 退按钮是没有用的。
2.存在安全问题,对企业数据建立了一个直接通道,存在安全漏洞。
3.破坏程序的异常处理机制。
4.违背URL与资源定位的初衷,在不同的地址上看到的内容不同。
5.不能很好地支持移动设备。
6.破坏web的原有标准,客户端肥大,太多客户段代码造成开发上的成本
AJAX工作原理: 1.创建ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp))
2.判断数据传输方式(GET/POST)
3.与服务器连接 open()
4.发送请求 send()
5.当ajax对象完成第四步(onreadystatechange)数据接收完成,判断http响应状态(status)200-300之间或者304(缓存)执行回调函数
GET方式:
var xhr=new XMLHttpRequest();
xhr.open("get","servlet?name=testParam",true);
xhr.send(null);
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
var ret=xhr.responseText;
alert(ret); } }
POST方式:
var xhr=new XMLHttpRequest();
xhr.open("post","servlet",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//必须在open后面
xhr.send("name=testParam");
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
var ret=xhr.responseText;
alert(ret); } }
XMLhttprequest对象: Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新。
**AJAX技术体系的组成部分:**HTML,css,dom,xml,xmlHttpRequest,javascript
AJAX请求的时候get 和post方式的区别?
(1)、 get 是从服务器上获取数据, post 是向服务器传送数据。
(2)、 get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。 post 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址 , 用户看不到这个过程。
(3)、对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。
(4)、 get 传送的数据量较小,不能大于 2KB 。 post 传送的数据量较大,一般被默认为不受限制。但理论上, IIS4 中最大量为 80KB , IIS5 中为 100KB 。
(5)、 get 安全性低, post 安全性较高。
(6)、Get请求有如下特性:它会将数据添加到URL中,通过这种方式传递到服务器,常利用一个问号?代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。Post请求有如下特性:数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。
ajax请求时,如何解释json数据?
使用eval parse 鉴于安全性考虑 使用parse更靠谱JSON.parse()@TOC