您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 郴州分类信息网,免费分类信息发布

js结合json实现ajax的实战案例

2025/11/4 16:55:17发布8次查看
这次给大家带来js结合json实现ajax的实战案例,js结合json实现ajax的注意事项有哪些,下面就是实战案例,一起来看一下。
前期准备
1、安装wampserver或者其他相似软件来搭建本地集成安装环境,我安装的是phpstudy
2、html、js、css等文件需要放置在phpstudy中的www目录中,默认运行index页面
3、bootstrap.css
界面截图:
phpstudy用起来很方便,如果你的电脑没有安装过php,那要先配置系统环境变量,将php.exe(在phpstudy的安装目录里找)的路径添加进去,然后在cmd里输入 php -v ,出现php的安装版本等信息则说明安装成功。
然后新建一个项目在phpstudy的www文件夹下,这里我取名为ajaxdemo。
index.html
<!doctype html> <html lang="en"> <head>   <meta charset="utf-8">   <title>index</title>   <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" />   <style>     .container{ width: 50%; margin-top: 30px; }     .text-danger{ margin-top: 6px; }   </style> </head> <body>   <p class="container">     <p class="panel panel-default">       <p class="panel-heading">         <p class="panel-title">员工查询</p>       </p>       <p class="panel-body">         <p class="form-horizontal">           <p class="form-group">             <label class="col-md-2 control-label">员工编号:</label>             <p class="col-md-8">               <input type="text" class="form-control" id="keyword">                           </p>             <p class="col-md-1">               <button class="btn btn-primary" id="search">查询</button>             </p>           </p>           <p class="form-group">             <label class="col-md-2 control-label">查询结果:</label>             <p class="text-danger col-md-8" id="searchresult"></p>           </p>         </p>               </p>     </p>   </p>   <p class="container">     <p class="panel panel-default">       <p class="panel-heading">         <p class="panel-title">员工增加</p>       </p>       <p class="panel-body">         <p class="form-horizontal">           <p class="form-group">             <label class="col-md-2 control-label">员工编号:</label>             <p class="col-md-8">               <input type="text" class="form-control" id="add-number">             </p>           </p>           <p class="form-group">             <label class="col-md-2 control-label">员工姓名:</label>             <p class="col-md-8">               <input type="text" class="form-control" id="add-name">             </p>           </p>           <p class="form-group">             <label class="col-md-2 control-label">员工性别:</label>             <p class="col-md-8">               <input type="text" class="form-control" id="add-sex">             </p>           </p>           <p class="form-group">             <label class="col-md-2 control-label">员工职位:</label>             <p class="col-md-8">               <input type="text" class="form-control" id="add-job">             </p>           </p>           <p class="form-group">             <p class="col-md-offset-2 col-md-1">                             <button class="btn btn-primary" id="add-search">增加员工</button>             </p>           </p>           <p class="form-group">             <label class="col-md-2 control-label">结果:</label>             <p class="text-danger col-md-8" id="add-resultshow"></p>           </p>         </p>               </p>     </p>   </p>   <script src="staffmanage.js"></script> </body> </html>
staffmanage.js
实例化ajax可分为五点,比较好记:
1、new一个xmlhttprequest实例 注意兼容低版本的ie浏览器
var xhr;  if (window.xmlhttprequest) {  xhr= new xmlhttprequest();  } else {  xhr= new activexobject(‘microsoft.xmlhttp');  }
2、open(method,url,asyn) xmlhttprequest对象的open()方法有3个参数,第一个参数指定是get还是post,第二个参数指定url地址,第三个参数指定是否使用异步,默认是true,所以不用写。
3*若是post请求还要加上请求头 setrequestheader(”content-type”,”application/x-www-form-urlencoded”)
4、send
调用send()方法才真正发送请求。get请求不需要参数,post请求需要把body部分以字符串或者formdata对象传进去。
5、onreadystatechange
6、responsetext
// 查询员工方法     var okeyword=document.getelementbyid('keyword'), //员工编号       osearchbtn=document.getelementbyid('search'), //查询按钮       osearchres=document.getelementbyid('searchresult'); //反馈结果显示     // 查询员工按钮点击事件       osearchbtn.onclick=function(){       searchstaff();     }     // 创建查询员工方法     function searchstaff(){       //var xhr=new xmlhttprequest();       //标准写法和ie写法混在一起,可以兼容低版本的ie浏览器       var xhr;       if (window.xmlhttprequest) {         xhr= new xmlhttprequest();       } else {         xhr= new activexobject('microsoft.xmlhttp');       }       xhr.open('get','serverjson.php?number='+okeyword.value);       xhr.send();       //当创建了xmlhttprequest对象后,要先设置onreadystatechange的回调函数。在回调函数中,通常我们只需通过readystate === 4判断请求是否完成,如果已完成,再根据status === 200判断是否是一个成功的响应。       xhr.onreadystatechange=function(){         if(xhr.readystate==4){           if(xhr.status=200){             var data=json.parse(xhr.responsetext); //json解析方法json.parse 或者 eval('('+xhr.responsetext+')')             osearchres.innerhtml=data.msg;           }         }       }     }     // 增加员工         var oaddnumber=document.getelementbyid('add-number'), //员工编号       oaddname=document.getelementbyid('add-name'), //员工姓名       oaddsex=document.getelementbyid('add-sex'), //员工性别       oaddjob=document.getelementbyid('add-job'), //员工职位       oaddsearch=document.getelementbyid('add-search'), //增加员工按钮       oaddresult=document.getelementbyid('add-resultshow'); //反馈结果显示     // 增加员工按钮点击事件     oaddsearch.onclick=function(){       createstaff();     }     // 创建增加员工方法     function createstaff(){       var xhr;       if(xhr.xmlhttprequest){         xhr = new xmlhttprequest();       }else{         xhr = new activexobject('microsoft.xmlhttp');       }       xhr.open('post','serverjson.php');       //这里注意key=value的等于号两边不要出现空格,会出现错误       var data='name='+oaddname.value       +'&number='+oaddnumber.value       +'&sex='+oaddsex.value       +'&job='+oaddjob.value;       //在open和send之间设置content-type       xhr.setrequestheader('content-type','application/x-www-form-urlencoded');       xhr.send(data);       xhr.onreadystatechange=function(){         if(xhr.readystate==4){           if(xhr.status=200){             var data=json.parse(xhr.responsetext);             if(data.success){               oaddresult.innerhtml=data.msg;                           }else{               oaddresult.innerhtml='出现错误:'+data.msg;             }           }else{             alert('发生错误!'+xhr.status)           }         }       }     }
serverjson.php
<?php //设置页面内容是html编码格式是utf-8 header("content-type: text/plain;charset=utf-8"); //header("content-type: application/json;charset=utf-8"); //header("content-type: text/xml;charset=utf-8"); //header("content-type: text/html;charset=utf-8"); //header("content-type: application/javascript;charset=utf-8"); //定义一个多维数组,包含员工的信息,每条员工信息为一个数组 $staff = array ( array("name" => 洪七, number => 101, sex => 男, job => 总经理),     array(name => 郭靖, number => 102, sex => 男, job => 开发工程师),     array(name => 黄蓉, number => 103, sex => 女, job => 产品经理)   ); //判断如果是get请求,则进行搜索;如果是post请求,则进行新建 //$_server是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字 //$_server[request_method]返回访问页面使用的请求方法 if ($_server[request_method] == get) {   search(); } elseif ($_server[request_method] == post){   create(); } //通过员工编号搜索员工 function search(){   //检查是否有员工编号的参数   //isset检测变量是否设置;empty判断值为否为空   //超全局变量 $_get 和 $_post 用于收集表单数据   if (!isset($_get[number]) || empty($_get[number])) {     echo '{success:false,msg:参数错误}';     return;   }   //函数之外声明的变量拥有 global 作用域,只能在函数以外进行访问。   //global 关键词用于访问函数内的全局变量   global $staff;   //获取number参数   $number = $_get[number];   $result = '{success:false,msg:没有找到员工。}';   //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果   foreach ($staff as $value) {     if ($value[number] == $number) {       $result = '{success:true,msg:找到员工:员工编号:' . $value[number] .                ',员工姓名:' . $value[name] .                ',员工性别:' . $value[sex] .                ',员工职位:' . $value[job] . '}';       break;     }   }   echo $result; } //创建员工 function create(){   //判断信息是否填写完全   if (!isset($_post[name]) || empty($_post[name])     || !isset($_post[number]) || empty($_post[number])     || !isset($_post[sex]) || empty($_post[sex])     || !isset($_post[job]) || empty($_post[job])) {     echo '{success:false,msg:参数错误,员工信息填写不全}';     return;   }   //todo: 获取post表单数据并保存到数据库   //提示保存成功   echo '{success:true,msg:员工:' . $_post[name] . ' 信息保存成功!}'; } ?>
总结
整个过程大概如图:
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
怎么配置谷歌浏览器支持file协议的ajax请求
ajax在不刷新的情况下检测输入的用户名
以上就是js结合json实现ajax的实战案例的详细内容。
郴州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product