分享ajax的三种解析模式
程序员文章站
2022-06-03 15:05:17
一、ajax中的json格式
html代码:
一、ajax中的json格式
html代码:
<html> <body> <input type="button" value="ajax" id="btn"> <script> var btn = document.getelementbyid("btn"); btn.onclick = function(){ var xhr = getxhr(); xhr.open("post","10.php"); xhr.setrequestheader("content-type","application/x-www-form-urlencoded"); /* * 在客户端如何构建json格式 * * 构建符合json格式的字符串 */ var user = '{"name":"zhangwuji","pwd":"123456"}'; xhr.send("user="+user); xhr.onreadystatechange = function(){ if(xhr.readystate==4&&xhr.status==200){ var data = xhr.responsetext; /* * 使用eval()函数进行转换 * * 使用"()"将其包裹,eval()函数强制将其转换为json格式(javascript代码) * * 不使用"()"将其包裹,eval()函数将其识别为一个空的代码块 */ var json = eval("("+data+")"); console.log(json); } } } function getxhr(){ var xhr = null; if(window.xmlhttprequest){ xhr = new xmlhttprequest(); }else{ xhr = new activexobject("microsoft.xmlhttp"); } return xhr; } </script> </body> </html>
php代码:
<?php // 接收客户端发送的请求数据 $user = $_post['user']; // 就是一个json格式的string字符串 //var_dump($user); $json_user = json_decode($user,true); //var_dump($json_user['name']); $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; //var_dump(json_decode($json)); // 响应数据符合json格式的字符串 // 1. 手工方式构建 //echo '{"name":"zhouzhiruo","pwd":"123456"}'; // 2. 使用json_encode()函数 echo json_encode($json_user); ?>
二 ajax中的xml格式
html页面:
<html> <body> <input type="button" value="ajax" id="btn"> <script> var btn = document.getelementbyid("btn"); btn.onclick = function(){ // 实现ajax的异步交互 var xhr = getxhr(); xhr.open("post","07.php"); xhr.setrequestheader("content-type","application/x-www-form-urlencoded"); /* * 如何构建符合xml格式的请求数据 * * 注意 * * 请求数据的格式 - key=value 不能改变的 * * 将value值构建成符合xml格式的数据 * * 数据类型 - 字符串(string) * * 格式符合xml的语法要求 * * 编写注意 * * 定义变量 - 专门构建xml格式的数据 * * 在send()方法进行拼串 */ var user = "<user><name>zhangwuji</name><pwd>123456</pwd></user>"; xhr.send("user="+user); xhr.onreadystatechange = function(){ if(xhr.readystate==4&&xhr.status==200){ // 接收服务器端的响应数据 var xmldoc = xhr.responsexml; var nameele = xmldoc.getelementsbytagname("name")[0]; var txtele = nameele.childnodes[0]; console.log(txtele.nodevalue); } } } function getxhr(){ var xhr = null; if(window.xmlhttprequest){ xhr = new xmlhttprequest(); }else{ xhr = new activexobject("microsoft.xmlhttp"); } return xhr; } </script> </body> </html>
php页面代码:
<?php // 接收客户端发送的请求数据 $user = $_post['user'];//符合xml格式要求的string类型 //var_dump($user); // 创建domdocument对象 $doc = new domdocument(); // 调用loadxml()方法 $result = $doc->loadxml($user); //var_dump($doc); // 如何构建符合xml格式的数据 /* 修改响应头的content-type值为"text/xml" header('content-type:text/xml'); echo $user;// 符合xml格式的string类型 */ header('content-type:application/xml'); echo $doc->savexml(); ?>
三 ajax中的html格式
html页面:
<html> <body> <select id="province"> <option>请选择</option> <option>山东省</option> <option>辽宁省</option> <option>吉林省</option> </select> <select id="city"> <option>请选择</option> </select> <script> /* * 需要思考哪些事情? * * 在什么时候执行ajax的异步请求? * * 当用户选择具体的省份信息时 */ // 1. 为id为province元素绑定onchange事件 var provinceele = document.getelementbyid("province"); provinceele.onchange = function(){ // 清空 var city = document.getelementbyid("city"); var opts = city.getelementsbytagname("option"); for(var z=opts.length-1;z>0;z--){ city.removechild(opts[z]); } if(provinceele.value != "请选择"){ // 2. 执行ajax异步请求 var xhr = getxhr(); xhr.open("post","06.php"); xhr.setrequestheader("content-type","application/x-www-form-urlencoded"); xhr.send("provcince="+provinceele.value); xhr.onreadystatechange = function(){ if(xhr.readystate==4&&xhr.status==200){ // 接收服务器端的数据内容 var data = xhr.responsetext; // data是字符串,转换为数组 var cities = data.split(","); for(var i=0;i<cities.length;i++){ var option = document.createelement("option"); var textnode = document.createtextnode(cities[i]); option.appendchild(textnode); city.appendchild(option); } } } } } // 定义创建xmlhttprequest对象的函数 function getxhr(){ var xhr = null; if(window.xmlhttprequest){ xhr = new xmlhttprequest(); }else{ xhr = new activexobject("microsoft.xmlhttp"); } return xhr; } </script> </body> </html>
php页面:
<?php // 用于处理客户端请求二级联动的数据 // 1. 接收客户端发送的省份信息 $province = $_post['provcince']; // 2. 判断当前的省份信息,提供不同的城市信息 switch ($province){ case '山东省': echo '青岛市,济南市,威海市,日照市,德州市'; break; case '辽宁省': echo '沈阳市,大连市,铁岭市,丹东市,锦州市'; break; case '吉林省': echo '长春市,*市,吉林市,通化市,四平市'; break; } // 服务器端响应的是字符串 ?>
以上内容是小编给大家分享ajax的三种解析模式,希望大家喜欢。
上一篇: js与jQuery终止正在发送的ajax请求的方法
下一篇: 比较Ajax的三种实现及JSON解析