博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目中关于AJAX的使用总结
阅读量:5877 次
发布时间:2019-06-19

本文共 2921 字,大约阅读时间需要 9 分钟。

hot3.png

一、使用情况:AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下使用。AJAX的核心:向服务器发送多个请求而无需用户等待来至服务器的响应。

二、AJAX的优势

    1.异步加载数据,无需切换页面,不需要刷新
    2.更佳的用户体验:局部刷新、及时验证、操作步骤简化等
    3.节省流量
    4.JS控制数据的加载,更加灵活多用
三、是用步骤:
    1.new XMLHttpRequest()
    2.open
    3.send
    4.onreadystatechange
    5.responseText
例子:(注意:要在服务器上运行)

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //第一步:买手机 var ajax=new XMLHttpRequest(); if (window.XMLHttpRequest){

var ajax=new XMLHttpRequest();//现代浏览器 }
else{
var ajax=new ActiveXObject("Msxml2.XMLHTTP");//见人IE6 }
//第二步:拨电话号 ajax.open("get","test.txt",true);//1.http方法get/post 2.请求的URL地址,可以为绝对地址也可以为相对地址。3.设置请求是否为异步模式。如果是TRUE,JavaScript函数将继续执行,而不等待服务器响应。
//第三步:发送 ajax.send();
//第四步:拨号成功 ajax.onreadystatechange=function (){
// alert(ajax.readyState); if (ajax.readyState==4){
// alert("已完成"); if (ajax.status>=200&&ajax.status<300||ajax.status==304){
//对方回复 alert(ajax.responseText);
}
}
}
// alert(ajax);
// console.log(ajax); </script> </head> <body> </body> </html>

四、readyState的常用的几种状态:

 

0:请求未初始化(还没有调用 open())。

1:请求已经建立,但是还没有发送(还没有调用 send())。

2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。

4:响应已完成;您可以获取并使用服务器的响应了。

 

1**:请求收到,继续处理

2**:操作成功收到,分析、接受

3**:完成此请求必须进一步处理

4**:请求包含一个错误语法或不能完成

5**:服务器执行一个完全有效请求失败

 

200 请求成功    

301 所请求的页面已经转移至新的url 

302 所请求的页面已经临时转移至新的url  

304 文档未修改原来缓冲的文档还可以继使用

400 服务器未能理解请求  

404 服务器无法找到被请求的页面 

500 请求未完成。服务器遇到不可预知的情况 

502 网关错误

 

请求成功条件

readyState==4&&status>200&&status<300||status==304

 

五、为了以后能更方便地使用,可以把ajax封装成一个js函数,如:

function fnAjax(url,succFn,faildFn){

if (window.XMLHttpRequest){
var ajax=new XMLHttpRequest();
}
else{
var ajax=new ActiveXObject("Msxml2.XMLHTTP");
}
ajax.open("get",url,true);
ajax.send();
ajax.onreadystatechange=function (){
if (ajax.readyState==4){
if (ajax.status>=200&&ajax.status<300||ajax.status==304){
succFn(ajax.responseText);
}
else{
faildFn();
}
}
}
}

六、函数的使用例子:

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css">

*{
margin: 0;
padding: 0; }
div{
height: 100px;
width: 100px;
background-color: #ccc;
display: none; } </style> <script type="text/javascript" src="ajax.js"></script> <script type="text/javascript">
window.οnlοad=function (){
var btns=document.getElementsByTagName("input");
var divs=document.getElementsByTagName("div");
for (var i = 0; i < btns.length; i++) {
btns[i].index=i;
btns[i].οnclick=function (){
for (var i = 0; i < btns.length; i++) {
divs[i].style.display="none";
};
divs[this.index].style.display="block";
//h/a2.html var _this=this;
fnAjax("h/a"+(this.index+1)+".html",function (str){
// alert(str); divs[_this.index].innerHTML=str;
});
}
};
}
</script> </head> <body> <input type="button" value="按钮1"> <input type="button" value="按钮2"> <input type="button" value="按钮3"> <div style="display:block;"> <p>我是a1</p> </div> <div></div> <div></div> </body> </html>

转载于:https://my.oschina.net/u/3687565/blog/1550871

你可能感兴趣的文章
一个简单的运算表达式解释器例子
查看>>
ORACLE---Unit04: SQL(高级查询)
查看>>
Entity Framework Code First 模式-建立多对多联系
查看>>
[LeetCode] Reverse Lists
查看>>
前台页面之<base>标签
查看>>
angular分页插件tm.pagination 解决触发二次请求的问题
查看>>
day08-文件操作
查看>>
教学-45 对象的相等
查看>>
贪食蛇
查看>>
关于Spring 中的事务
查看>>
为什么现在都用面向对象开发,为什么现在都用分层开发结构?
查看>>
【离散数学】 SDUT OJ 偏序关系
查看>>
写给学弟学妹的产品入门建议(持续更新)
查看>>
view视图总结
查看>>
oracle11g 数据库导出报“ EXP-00003:
查看>>
201521123009 《Java程序设计》第11周学习总结
查看>>
可解释的机器学习
查看>>
Python3之多线程学习
查看>>
aspx页面@Page指令解析
查看>>
POJ 2002
查看>>