关于使用原生JavaScript发送异步请求给服务端。
准备工作:
代码编写工具用的是sublime 服务端使用的是wamp搭的一个本地Apache服务器,主要用来返回数据 方便测试
步骤:
浏览器端
html标签绑定事件发送ajax请求---->
五步操作:1 创建异步对象XMLHttpRequest;
2 设置method url
3 发送请求给服务端
4 注册事件
5 在事件中获取服务端返回的数据,进行操作。
服务器端
1 获取请求数据
2 返回结果给浏览器
下面来一个小demo1做一个简单的请求操作 点击按钮发送请求给服务器端,返回图片地址,渲染div的背景图
nobibi 上代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <style> 4 .div1{ 5 width: 200px; 6 height: 200px; 7 border: 1px solid red; 8 margin: 20px auto; 9 } 10 .div2{ 11 width: 300px; 12 height: 100px; 13 border: 1px solid red; 14 margin: 20px auto; 15 } 16 body{ 17 text-align: center; 18 } 19 </style> 20 <head> 21 <meta charset="utf-8"> 22 </head> 23 <body> 24 <div class=\'div1\'></div> 25 <div class=\'div2\'></div> 26 <input type="button" value="baby" class=\'starBtn\'> 27 <input type="button" value="hxm" class=\'starBtn\'> 28 <input type="button" value="lh" class=\'starBtn\'> 29 </body> 30 </html> 31 <script> 32 //获取按钮list 33 var btnList = document.querySelectorAll(\'.starBtn\'); 34 //循环绑定点击事件 35 for (var i = 0; i < btnList.length; i++) { 36 btnList[i].onclick = function(){ 37 //新建异步处理对象 38 var ajax = new XMLHttpRequest(); 39 //设置请求类型为post,请求的页面为server1.php 40 ajax.open(\'post\',\'server1.php\'); 41 //因为是post请求所以必须加上setRequestHeader(get请求可以忽略) 42 ajax.setRequestHeader(\'Content-type\',\'application/x-www-form-urlencoded\'); 43 //请求所带的参数 name=this.value 44 ajax.send(\'name=\'+this.value); 45 //绑定onreadystatechange事件 46 ajax.onreadystatechange=function(){ 47 //判断如果请求的状态是否成功 48 if (ajax.readyState==4&&ajax.status==200) { 49 //根据返回值ajax.responseText操作dom元素更改div的背景图片 50 document.querySelector(\'.div1\').style.background = \'url(\'+ajax.responseText+\') no-repeat center/cover\'; 51 document.querySelector(\'.div2\').innerHTML = ajax.responseText 52 }; 53 } 54 } 55 }; 56 57 </script>
浏览器端代码结束。
下面是服务端代码,服务端是用php写的简单几句
<?php //获取post请求的数据 $key = $_POST[\'name\']; //关系数组 $starArr = array( \'baby\'=>\'images/baby.jpg\', \'hxm\'=>\'images/hxm.jpg\', \'lh\'=>\'images/lh.jpg\' ); $value = $starArr[$key]; //返回图片地址 echo $value; ?>
至此 一个简单的使用原生JavaScript写的异步请求 完成。