分享ajax的三种解析模式
一、Ajax中的JSON格式
html代码:
<html>
<body>
<inputtype="button"value="Ajax"id="btn">
<script>
varbtn=document.getElementById("btn");
btn.onclick=function(){
varxhr=getXhr();
xhr.open("post","10.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
/*
*在客户端如何构建JSON格式
**构建符合JSON格式的字符串
*/
varuser='{"name":"zhangwuji","pwd":"123456"}';
xhr.send("user="+user);
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
vardata=xhr.responseText;
/*
*使用eval()函数进行转换
**使用"()"将其包裹,eval()函数强制将其转换为JSON格式(javascript代码)
**不使用"()"将其包裹,eval()函数将其识别为一个空的代码块
*/
varjson=eval("("+data+")");
console.log(json);
}
}
}
functiongetXhr(){
varxhr=null;
if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}else{
xhr=newActiveXObject("Microsoft.XMLHttp");
}
returnxhr;
}
</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()函数
echojson_encode($json_user);
?>
二 Ajax中的XML格式
html页面:
<html>
<body>
<inputtype="button"value="Ajax"id="btn">
<script>
varbtn=document.getElementById("btn");
btn.onclick=function(){
//实现Ajax的异步交互
varxhr=getXhr();
xhr.open("post","07.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
/*
*如何构建符合XML格式的请求数据
**注意
**请求数据的格式-key=value不能改变的
**将value值构建成符合XML格式的数据
**数据类型-字符串(string)
**格式符合XML的语法要求
**编写注意
**定义变量-专门构建XML格式的数据
**在send()方法进行拼串
*/
varuser="<user><name>zhangwuji</name><pwd>123456</pwd></user>";
xhr.send("user="+user);
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
//接收服务器端的响应数据
varxmlDoc=xhr.responseXML;
varnameEle=xmlDoc.getElementsByTagName("name")[0];
vartxtEle=nameEle.childNodes[0];
console.log(txtEle.nodeValue);
}
}
}
functiongetXhr(){
varxhr=null;
if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}else{
xhr=newActiveXObject("Microsoft.XMLHttp");
}
returnxhr;
}
</script>
</body>
</html>
PHP页面代码:
<?php
//接收客户端发送的请求数据
$user=$_POST['user'];//符合XML格式要求的string类型
//var_dump($user);
//创建DOMDocument对象
$doc=newDOMDocument();
//调用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>
<selectid="province">
<option>请选择</option>
<option>山东省</option>
<option>辽宁省</option>
<option>吉林省</option>
</select>
<selectid="city">
<option>请选择</option>
</select>
<script>
/*
*需要思考哪些事情?
**在什么时候执行Ajax的异步请求?
**当用户选择具体的省份信息时
*/
//1.为id为province元素绑定onchange事件
varprovinceEle=document.getElementById("province");
provinceEle.onchange=function(){
//清空
varcity=document.getElementById("city");
varopts=city.getElementsByTagName("option");
for(varz=opts.length-1;z>0;z--){
city.removeChild(opts[z]);
}
if(provinceEle.value!="请选择"){
//2.执行Ajax异步请求
varxhr=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){
//接收服务器端的数据内容
vardata=xhr.responseText;
//data是字符串,转换为数组
varcities=data.split(",");
for(vari=0;i<cities.length;i++){
varoption=document.createElement("option");
vartextNode=document.createTextNode(cities[i]);
option.appendChild(textNode);
city.appendChild(option);
}
}
}
}
}
//定义创建XMLHttpRequest对象的函数
functiongetXhr(){
varxhr=null;
if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}else{
xhr=newActiveXObject("Microsoft.XMLHttp");
}
returnxhr;
}
</script>
</body>
</html>
php页面:
<?php
//用于处理客户端请求二级联动的数据
//1.接收客户端发送的省份信息
$province=$_POST['provcince'];
//2.判断当前的省份信息,提供不同的城市信息
switch($province){
case'山东省':
echo'青岛市,济南市,威海市,日照市,德州市';
break;
case'辽宁省':
echo'沈阳市,大连市,铁岭市,丹东市,锦州市';
break;
case'吉林省':
echo'长春市,松原市,吉林市,通化市,四平市';
break;
}
//服务器端响应的是字符串
?>
以上内容是小编给大家分享ajax的三种解析模式,希望大家喜欢。