ajax是前后后端交互的重要手段,本身不是单一技术,是一连串技术的集合:
1.js通过用户或与其他浏览器相关事件捕获交互行为;
2.XMLHTTPrequest对象,通过这个对象可以在不中断其他浏览器任务情况下的向服务器发送请求;
3.服务器上的文件,XML、HTML、JSON格式保存数据;
4、其他js,解析来自(php或mysql)返回来的数据,将其呈现在页面
优势:不需要插件支持,用户体验极佳,提升web程序性能,减轻服务器和带宽的负担。
劣势:IE5以下不支持,前进后退功能被破坏,ajax永远在当前页,不会记录前后页面,搜索引擎支持不够
0:还未初始化,没有调用send()方法
1:(载入)已调用,正在发送请求
2:(载入完成),方法执行完成,已接收到全部的响应内容
3.(交互):正在解析响应内容
4.内容解析完成,可以再客户端调用了
1.请求收到,继续处理
................
AJAX兼容问题:
ajax=new XMLHTTPrequest;
ajax=new ActiveXObject(" Microsoft.XMLHTTP"); //IE5
AJAX缓存问题:用时间戳清除缓存
ajaxGet("data/test.txt?t='+new Data().getTime(),fn);
eval()方法:可以将字符串转变成js可识别的代码
数据发送:
POST()方法:数据network里,路径是php.php
GET()方法:数据network里,路径是php.php?user=123&email=444
post和get发送数据被请求的地址接收后显示的格式不一样;get被解析成key和value;
post会被解析成字符串,在发送数据之前ajax.send设置表头信息,ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
promise:
只有一部操作的结果,可以决定当前是哪一种状态(进行中,已完成,失败),这个对象状态有一定的顺序,顺序不可逆
promise改造ajax依赖调用: 使用promise检测ajax的请求状态,利用promise的成功状态函数,返回ajax请求到的数据
跨域:
同源策略:浏览器厂商约定,域和域之前的数据不互通;同源是指:协议、域名、端口相同
前端的跨域方法:jsonp
浏览器对HTML标签没有做跨域的限制,故将url写在script标签内,来加载跨域接口的URL