AJAX
什么是AJAX?
AJAX是一种用于快速创建动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX可以实现网 页实现异步更新,这意味着可以在不加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页。
AJAX的原理
思路:先解释异步,再解释ajax如何使用 Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用 javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。 XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的 说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。
AJAX的优点
- AJAX不是新的编程语言,而是一种使用现有标准的新方法。
- AJAX最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
- AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上运行。
AJAX的缺点
- AJAX干掉了Back和History功能,即对浏览器机制的破坏。 在动态更新页面的情况下,用户无法回到前一个页面状态,因为浏览器仅能记忆历史记录中的静态页面。一个被完整读入的页面与一个
- 已经被动态修改过的页面之间的差别非常微妙;用户通常会希望单击后退按钮能够取消他们的前一次操作,但是在Ajax应用程序中,这将无法实现。
- 安全问题技术同时也对IT企业带来了新的安全威胁,ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。ajax的逻辑可以对客户端的
- 安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。
- 对搜索引擎的支持比较弱。如果使用不当,AJAX会增大网络数据的流量,从而降低整个系统的性能。
AJAX状态码说明
- 1**:请求收到,继续处理
- 2**:操作成功收到,分析、接受
- 3**:完成此请求必须进一步处理
- 4**:请求包含一个错误语法或不能完成
- 5**:服务器执行一个完全有效请求失败
发送ajax请求步骤:
- 创建XMLHttpRequest类型的对象
- 准备发送,打开与一个网址之间的连接
- 执行发送动作
- 指定xhr状态变化事件处理函数
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else {
// IE6兼容
xhr = ActiveXObject("Microsoft.XMLHTTP");
}
// 初始化
console.log("UNSEND",xhr.readyState);
// 2.打开连接
xhr.open("post","https://jsonplaceholder.typicode.com/users");
// 创建连接
console.log("OPENED",xhr.readyState);
// 设置响应头
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// 3.执行发送动作
// post方式
xhr.send("name=mh&age=18");
// 4.指定xhr状态变化事件处理函数
xhr.onreadystatechange = function (){
if(this.readyState === 2){
// 接收到响应头
console.log("HEADERS_RECEIVED",xhr.readyState);
}else if(this.readyState === 3){
// 响应体加载中
console.log("LOADING",xhr.readyState);
}else if(this.readyState === 4){
// 加载完成
console.log("DONE",xhr.readyState);
}
}