ajax 四部曲:
创建ajax对象
连接服务器
发送请求
接收返回值
实例一:
<html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="button" value="测试" id="btn1"> <script> window.onload = function(){ var oBtn = document.getElementById("btn1"); oBtn.onclick=function(){ //步骤1.创建ajax对象 //主流浏览器 //var xhr = new XMLHttpRequest(); //ie6以下浏览器 //var xhr = new ActiveXObject("Microsoft.XMLHTTP"); //处理兼容 //如果XMLHttpRequest存在 那么就是主流浏览器 否则就是ie6浏览器 if (window.XMLHttpRequest) { //创建ajax对象 var xhr = new XMLHttpRequest(); }else{ //IE6创建ajax对象 var xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //步骤2:打开服务器 /* open(提交方法[post/get],url,是否异步[true/false]) 异步:多件事情一起做 同步:多件事情一件一件做 */ //new Date().getTime() 表示清除缓存 var url = "ajax1.txt?t="+new Date().getTime(); xhr.open("get",url,true); //步骤3 发送请求 xhr.send(); //步骤4 接受返回 xhr.onreadystatechange = function(){ /* xhr.readyState 表示服务器执行到哪种状态 0 未初始化 还没有调用open() 1 载入 表示已经调用open 正在发送请求 2 载入完成 send()方法执行完毕 已收到全部响应内容 3 解析 正在解析响应内容 4 完成 响应内容完毕 可以调用 */ if(xhr.readyState==4){ if(xhr.status==200){ alert("正在读取文件:"+xhr.responseText); }else{ alert("异常"); } } } } } //js 变量和属性 //声明变量及输出 //var a = 12; //alert(a); //window对象的a属性 //alert(window.a); //如果直接输出a 会报错 //alert(a);//Uncaught ReferenceError: a is not defined //不会报错 undefined //alert(window.a); //加上window只是找不到window的属性a </script> </body> </html>
实例二:
<body> <input type="button" value="按钮" id="btn"> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } //在地址栏输入地址 /* 1.缓存 在url?后面连接一个随机数 时间戳 2. 乱码 编码encodeURI */ xhr.open('get','ajax2.php?username='+encodeURI('刘伟')+'&age=30&'+new Date().getTime(),true); //提交 xhr.send(); //等待服务器返回内容 /* readyState: ajax工作状态 responseText: ajax 请求返回的内容就被存放到这个属性下面 onreadystatechange : 当readyState改变时候触发 status: 服务器状态, http状态码 */ xhr.onreadystatechange=function(){ if(xhr.readyState==4){ alert(xhr.responseText); } } } </script> </body>
实例三:get方式提交
<html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> 表单: 数据提交 action: 数据提交的地址 默认是当前页面 method: 数据提交方式 1. get 把数据名称和数据值用=连接,如果有多个的话 那么它会把 多个数据组合用&进行连接,然后把数据放到url?后面进行传递到指定页面 ajax2.php?uername=zs&age=12 2. post enctype:提交的数据格式 application/x-www-form-urlencoded <form action="ajax2.php" method="get"> 姓名<input type="text" name="username" /> 年龄<input type="text" name="age" /> <input type="submit" value="提交" /> </form> </body> </html> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } //在地址栏输入地址 /* 1.缓存 在url?后面连接一个随机数 时间戳 2. 乱码 编码encodeURI */ xhr.open('get','ajax2.php?username='+encodeURI('刘伟')+'&age=30&'+new Date().getTime(),true); //提交 xhr.send(); //等待服务器返回内容 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ alert(xhr.responseText); } } } </script>
实例四:post方式提交
<html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> 表单: 数据提交 action: 数据提交的地址 默认是当前页面 method: 数据提交方式 1. get 把数据名称和数据值用=连接,如果有多个的话 那么它会把 多个数据组合用&进行连接,然后把数据放到url?后面进行传递到指定页面 ajax2.php?uername=zs&age=12 url 长度限制原因 ,我们不要通过get方式传递过多的数据 2. post 理论上无限制 enctype:提交的数据格式 application/x-www-form-urlencoded <form action="ajax3.php" method="post"> 姓名<input type="text" name="username" /> 年龄<input type="text" name="age" /> <input type="submit" value="提交" /> </form> </body> </html> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } //在地址栏输入地址 xhr.open('post','ajax3.php',true); //提交 //post 方式 数据放在send()里面作为参数传递 //声明发送的数据类型 //post 没有缓存问题 //无需编码 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded'); xhr.send('username=leo&age=30'); //等待服务器返回内容 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ alert(xhr.responseText); } } } </script> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } //在地址栏输入地址 xhr.open('post','gteList.php',true); //提交 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded'); xhr.send('username=leo&age=30'); //等待服务器返回内容 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if (xhr.status==200) { alert(xhr.responseText); }else{ alert('出错了,Err:'+xhr.status); } } } } </script>
实例五:综合实例
getList2.php <?php header('Content-type:text/html;charset=utf-8'); $arr1 = array( array('title'=>'江苏渔民打捞上缴9个可疑水下装置 18人获国家重奖','data'=>'2018.1'), array('title'=>'蒙冤男子4年花光160万赔偿金:无法理解这个时代','data'=>'2018.2'), array('title'=>'"加拿大鹅"北京店开业:排队要30分钟','data'=>'2018.3'), array('title'=>'嫦娥四号实施变轨控制','data'=>'2018.4'), array('title'=>'谁给权健式保健品把把脉?','data'=>'2018.4'), array('title'=>'谁给权健式保健品把把脉?','data'=>'2018.4'), array('title'=>'谁给权健式保健品把把脉?','data'=>'2018.4'), ); echo json_encode($arr1); <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="button" value="按钮" id="btn"> <ul id="ul1"></ul> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } //在地址栏输入地址 xhr.open('post','gteList2.php',true); //提交 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded'); xhr.send(); //等待服务器返回内容 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if (xhr.status==200) { //alert(xhr.responseText); var data = JSON.parse( xhr.responseText ); var oUl=document.getElementById('ul1'); var html=''; for (var i = 0;i<data.length; i++) { html+='<li><a href="">'+data[i].title+'</a><span>'+data[i].data+'</span></li>'; } oUl.innerHTML=html; }else{ alert('出错了,Err:'+xhr.status); } } } } </script> </body> </html>
实例6:封装ajax
ajax.js function ajax(method,url,data,success){ //打开浏览器 var xhr = null; try{ xhr = new XMLHttpRequest(); }catch(e){ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } if(method == 'get' && data){ url+='?'+data; } //在地址栏输入地址 xhr.open(method,url,true); //提交 if(method=='get' && data){ xhr.send(); }else{ //post发送 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded'); xhr.send(data); } //等待服务器返回内容 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ if (xhr.status==200) { success && success(xhr.responseText); }else{ alert('出错了,Err:'+xhr.status); } } } } <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="button" value="按钮" id="btn"> <ul id="ul1"></ul> <script src="ajax.js"></script> <script> var oBtn = document.getElementById('btn'); oBtn.onclick=function(){ ajax('get','gteList2.php','',function(data){ var data = JSON.parse( data ); var oUl=document.getElementById('ul1'); var html=''; for (var i = 0;i<data.length; i++) { html+='<li><a href="">'+data[i].title+'</a><span>'+data[i].data+'</span></li>'; } oUl.innerHTML=html; }); setInterval(function(){ ajax('get','gteList2.php','',function(data){ var data = JSON.parse( data ); var oUl=document.getElementById('ul1'); var html=''; for (var i = 0;i<data.length; i++) { html+='<li><a href="">'+data[i].title+'</a><span>'+data[i].data+'</span></li>'; } oUl.innerHTML=html; }); },1000); } </script> </body> </html>