想要了解什么是ajax先从几个问题开始: 1.ajax怎么同时发送多个请求?php
在ajax应用中,一般一个页面要同时发送多个请求,若是只有一个XMLHttpRequest 对象,前面的请求还未完成,后面的就会把前面的覆盖掉,若是每次都建立一个新的 XMLHttpRequest对象,也会形成浪费。解决的办法就是建立一个XMLHttpRequset的对象池,若是池里有空闲的对象,则使用此对象,不然将建立一个新的对象。
前端
2.手动编写一个ajax,不依赖第三方库?ajax
<script>
// 1. 建立 xhr 对象
var xhr = new XMLHttpRequest();
// 2.打开服务流
// 参数一:请求的方式 get或者post
// 参数二:请求的地址 若是是get请求,数据是会坠在url地址上发送过去
// 参数三:是否异步 默认值是true (异步) false (同步)
xhr.open('get', 'demo.php?username=feifei&age=18', true);
// 3.因为是get请求,因此不须要发送请求体数据,直接发送一个null
xhr.send(null);
// 4.服务器响应
// 但凡是readyState状态发生改变的时候,就触发的事件
// 若是当readyState状态为4的时候表明ajax已经回到了客户端
// xhr.status == 200 表明服务器响应成功
// 只有当这二者都知足的时候,表明将服务端的数据拿回到了客户端
// xhr.responseText里面存放着服务器响应回来的数据
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
var data = xhr.responseText;
console.log(data);
}
}
</script>
复制代码
什么是ajax?小程序
AJAX = 异步 JavaScript 和 XML。后端
AJAX 是一种用于建立快速动态网页的技术。浏览器
经过在后台与服务器进行少许数据交换,AJAX 可使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行更新。安全
传统的网页(不使用 AJAX)若是须要更新内容,必需重载整个网页面。bash
ajax的优缺点:服务器
优势:网络
1.局部刷新、
AJAX最大优势就是能在不刷新整个页面的前提下与服务器通讯维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减小用户等待时间,带来很是好的用户体验。
2.异步加载
AJAX使用异步方式与服务器通讯,不须要打断用户的操做,具备更加迅速的响应能力。优化了Browser和Server之间的沟通,减小没必要要的数据传输、时间及下降网络上数据流量。
3.前端和后端负载平衡
AJAX能够把之前一些服务器负担的工做转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。而且减轻服务器的负担,AJAX的原则是“按需取数据”,能够最大程度的减小冗余请求和响应对服务器形成的负担,提高站点性能。
4.基于标准被普遍支持
AJAX基于标准化的并被普遍支持的技术,不须要下载浏览器插件或者小程序,但须要客户容许JavaScript在浏览器上执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。一样,也出现了另外一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
界面与应用分离
Ajax使WEB中的界面与应用分离(也能够说是数据与呈现分离),有利于分工合做、减小非技术人员对页面的修改形成的WEB应用程序错误、提升效率、也更加适用于如今的发布系统。
缺点:
ajax干掉了back和history功能,即对浏览器机制的破坏
在动态更新页面的状况下,用户没法回到前一个页面状态,由于浏览器仅能记忆历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差异很是微妙;用户一般会但愿单击后退按钮可以取消他们的前一次操做,可是在Ajax应用程序中,这将没法实现。
ajax的安全问题
AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据创建了一个直接通道。这使得开发者在不经意间会暴露比之前更多的数据和服务器逻辑。
对搜索引擎支持较弱
不利于SEO优化,对搜索引擎的支持比较弱。若是使用不当,AJAX会增大网络数据的流量,从而下降整个系统的性能
破坏程序的异常处理机制
难以调试 ###ajax的语法
分为四个步骤(再也不兼容IE低版本):
1.建立xhr对象
var xhr=new XMLHttpRequest();
2.打开服务流
2.1 get方式:
xhr.open("GET","ajax_info.txt?username='zhangsan&gender='男'",true);
2.2 post方式:
xhr.open("POST","ajax_info.txt?",true);
小结:
open()中三个参数:open(method,url,async)
规定请求的类型、URL 以及是否异步处理请求。
- method:请求的类型;GET 或 POST
- url:文件在服务器上的位置
- async:true(异步)或 false(同步)
get和post方式的差别:
get的参数直接坠在url中,post方式在send()中传递
3.向服务器发送请求
3.1 get方式
xhr.send();
3.2 post方式
xhr.send("username='zhangsan&gender='男'");
4.服务器响应
xhr.onreadystatechange=function()
{
if (xhr.readyState==4 && xhr.status==200)
{
console.log(xhr.resposeText);
}
}
复制代码
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器链接已创建
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status 200: "OK"
404: 未找到页面
复制代码