后端程序员的前后端交互核心-AJax
1 Ajax概述
- AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
- AJAX = Asynchronous异步 JavaScript and XML。
- AJAX 是一种用于创建快速动态网页的技术。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
- 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页。
2 Ajax异步请求原理
同步请求
同步请求 |
|
异步请求 |
|
3 Ajax开发步骤
Get请求携带参数,直接拼接在url后面
function sendGet(){ //同步请求 //location.href = "/jsAjax?name=123&123"; //1、创建XMLHTTPRequest对象 var xhr = new XMLHttpRequest(); //2、设置异步请求的对象的URL地址 //参数1:请求方式 参数:请求的URL地址 参数3:是否异步请求(默认true) xhr.open("GET","/jsAjax?name=cxk&age=21"); //3、通过异步请求对象发送异步请求 xhr.send(); //4、监听异步请求的状态 xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ //异步请求成功,且响应数据了。 //数据渲染 //xhr.responseText这个数据是一个json字符串。 var json1 = xhr.responseText; //将json格式的字符串转成json对象 var json = JSON.parse(json1); console.log(json.code); console.log(json.msg); } } }
POST请求携带参数
function sendPost(){ //1、创建XMLHTTPRequest对象 var xhr = new XMLHttpRequest(); //2、设置异步请求的对象的URL地址 //参数1:请求方式 参数:请求的URL地址 参数3:是否异步请求(默认true) xhr.open("POST","/jsAjax"); //注意:如果使用POST请求携带数据,那么需要设置请求头 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded") //3、通过异步请求对象发送异步请求如果请求方式为POST那么请求参数要放在send方法中。(仅限于POST请求) xhr.send("name=cxk&age=20"); //4、监听异步请求的状态 xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ //异步请求成功,且响应数据了。 //数据渲染 console.log(xhr.responseText) } } }
4 创建XMLHttpRequest对象
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
var xhr; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xhr=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xhr=new ActiveXObject("Microsoft.XMLHTTP"); }
5 XMLHttpRequest请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
6 readyState
- 每当 readyState 改变时,就会触发 onreadystatechange 事件。
- 在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
- readyState 属性存有 XMLHttpRequest 的状态信息。
- 当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
- 下面是 XMLHttpRequest 对象的三个重要的属性:
属性 | 描述 |
onreadystatechange | 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。 |
readyState | 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化1: 服务器连接已建立2: 请求已接收3: 请求处理中4: 请求已完成,且响应已就绪 |
status | 例:200: “OK” ;404: 未找到页面 |
7 XMLHttpRequest响应
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 | 描述 |
responseText | 获得字符串形式的响应数据。 |
responseXML | 获得 XML 形式的响应数据(不重要) |