l AJAX 的全称是异步的 Javascript 和 XML ,是一种创建快速动态的技术,通过在后台与服务器进行少量数据交互,实现网页的异步更新,在不重新加载整个界面的情况下,做到网页的部分刷新;
l AJAX 的交互模型( AJAX 的过程)
Ø 用户发出异步请求;
Ø 创建 XMLHttpRequest 对象;
Ø 告诉 XMLHttpRequest 对象哪个函数会处理 XMLHttpRequest 对象状态的改变,为此要把对象的 onReadyStateChange 属性设置为响应该事件的 JavaScript 函数的引用
Ø 创建请求,用 open 方法指定是 get 还是 post ,是否异步, url 地址;
Ø 发送请求, send 方法
Ø 接收结果并分析
Ø 实现刷新
l 同步:脚本会停留并等待服务器发送回复然后再继续
异步:脚本允许页面继续其进程并处理可能的回复
l 跨域问题的解决
1. 使用 document.domain+iframe 解决跨子域问题
2. 使用 window.name
3. 使用 flash
4. 使用 iframe+location.hash
5. 使用 html5 的 postMessage ;
6. 使用 jsonp (创建动态 script )
Ajax有关内容:
1.什么是ajax?
ajax主要实现客户端服务端的异步通信,实现页面的局部刷新。
2.ajax的优点:
实现局部刷新,提升了用户体验;
优化了浏览器与服务器之间的传输,减少了不必要的数据往返,降低了宽带的使用;
ajax在客户端运行,减轻了服务端的的负载。
3.ajax的实现过程:
创建xmlHttpRequest()对象
创建http请求
设置响应http请求状态的函数
发送http请求
获取异步调用返回的数据
使用javascript和dom实现页面局部刷新
4.手写ajax
var xhr=new XMLHttpRequest()
xhr.open(“get”,URL,true)
xhr.onreadystatechange=function(){
if(xhr.onreadyState==4){
if(xhr.status=200){
console.log(xhr.responseText)
}
}
}
xhr.send()
5.ajax的不足:
无法操作back按钮
安全问题 ajax暴露了与服务器交互的细节
不容易调试
破坏了程序的异常机制
对搜索引擎的支持比较弱
6.ajax同步与异步的区别
同步:提交请求,等待服务器处理,处理完毕。此阶段不允许浏览器干其他任何事情
异步:请求通过事件触发,服务器处理,此时的浏览器可以去干其他事),处理完成返回数据。
ajax.open方法中,第三个参数可以设置是同步还是异步
7.ajax的最大特点
可以实现异步通信效果,实现页面的动态局部刷新,按需获取数据,节约带宽资源
readyState的状态码:0未初始化;1启动;2发送;3接收;4完成。
8.跨域解决的办法:
jsonp:通过script标签发送请求,因为此标签不受同源策略的限制,支持跨域访问,操作为在script标签内给服务器发送一个callback全局函数;
porxy***:通过服务器发送请求,然后将请求结果发送给前端。实现方法:nginx***;
跨域资源共享,设置cors:设置Access-Control-Allow-Origin;
document.domain/window.name/window.postMessage等。