ajax的省市联动案例(通过Ajax响应http协议与PHP通讯)
showCities.php页面
<html>
<head>
<meta http-equiv=”content-type” content=”text/html;charset=utf-8″/>
<script type=”text/javascript”>
//创建ajax引擎
function getXmlHttpObject(){
var xmlHttpRequest;
//不同的浏览器获取对象xmlhttprequest 对象方法不一样
if(window.ActiveXObject){
xmlHttpRequest=new ActiveXObject(“Microsoft.XMLHTTP”);
}else{
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}
var myXmlHttpRequest=””;
function getCities(){
myXmlHttpRequest=getXmlHttpObject();
if(myXmlHttpRequest){
var url=”/ajax/showCitiesPro.php”;//post
var data=”province=”+$(‘sheng’).value;
myXmlHttpRequest.open(“post”,url,true);//异步方式
myXmlHttpRequest.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
//指定回调函数
myXmlHttpRequest.onreadystatechange=chuli;
//发送
myXmlHttpRequest.send(data);
}
}
function chuli(){
if(myXmlHttpRequest.readyState==4){
if(myXmlHttpRequest.status==200){ //这里更严谨了 之前的案例没有 这个参数可以查询ajax手册了解
//取出服务器回送的数据
var cities=myXmlHttpRequest.responseXML.getElementsByTagName(“city”);
$(‘city’).length=0;
var myOption=document.createElement(“option”);
myOption.innerText=”–城市–“;
//添加到
$(‘city’).appendChild(myOption);
//遍历并取出城市
for(var i=0;i<cities.length;i++){
var city_name=cities[i].childNodes[0].nodeValue;
//创建新的元素option
var myOption=document.createElement(“option”);
myOption.value=city_name;
myOption.innerText=city_name;
//添加到
$(‘city’).appendChild(myOption);
}
}
}
}
//这里我们写一个函数
function $(id){
return document.getElementById(id);
}
</script>
</head>
<body>
<select id=”sheng” onchange=”getCities();”>
<option value=””>—省—</option>
<option value=”zhejiang”>浙江</option>
<option value=”jiangsu” >江苏</option>
<option value=”sichuan” >四川</option>
</select>
<select id=”city”>
<option value=””>–城市–</option>
</select>
<select id=”county”>
<option value=””>–县城–</option>
</select>
</body>
</html>
**showCitiesProcess.php**
<?php
//服务器端
//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
header(“Content-Type: text/xml;charset=utf-8”);
//告诉浏览器不要缓存数据
header(“Cache-Control: no-cache”);
//接收用户的选择的省的名字
$province=$_POST[‘province’];
file_put_contents(“d:/mylog.log”,$province.”\r\n”,FILE_APPEND);
//如何在调试过程中,看到接收到的数据 。
//到数据库去查询省有那些城市(现在先不到数据库)
$info=””;
if($province==”zhejiang”){
$info=”<province><city>杭州</city><city>温州</city><city>宁波</city></province>”;
}else if($province==”jiangsu”){
$info=”<province><city>南京</city><city>徐州</city><city>苏州</city></province>”;
}
echo $info;
?>