求一 PHP AJAX二级联动-城市地区的问题,在线等 求一 个PHP AJAX二级联动-城市地区的事例,要完全代码,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你详细代码!a.html //显示城市地区的面页<script language="javascript" type="text/javascript">function createRequest(){ var request; if(window.XMLHttpRequest){ // For Mozilla, Safari, ... request = new XMLHttpRequest(); } else if(window.ActiveXObject){ // For Internet Explorer request = new ActiveXObject("Microsoft.XMLHTTP"); } return request;}function getCity(){ var ajax=createRequest(); var url = "getCity.php"; ajax.open("GET",url,true); ajax.onreadystatechange = function () { if (ajax.readyState == 4 && ajax.status==200) { updatePageCity(ajax.responseText); } } ajax.send(null);}function updatePageCity(str){ var str1 = new Array(); var str2=str.trim(); // alert(str); str1 =str2.split("|"); //alert(str1); document.getElementById("city").options[0]=new Option("-请选择大类-", " "); for(var i=0;i<str1.length-1;i++){ document.getElementById("city").options[i+1]=new Option(str1[i],str1[i]); }}function getDiqu(){ var ajax=createRequest(); var city=document.getElementById("city").value; var url = "getDiqu.php?city="+city; ajax.open("GET",url,true); ajax.onreadystatechange = function () { if (ajax.readyState == 4 && ajax.status==200) { updatePageDiqu(ajax.responseText); } } ajax.send(null);}function updatePageDiqu(str){ var str1 = new Array(); var str2=str.trim(); // alert(str); str1 =str2.split("|"); //alert(str1); document.getElementById("diqu").options[0]=new Option("-请选择大类-", " "); for(var i=0;i<str1.length-1;i++){ document.getElementById("diqu").options[i+1]=new Option(str1[i],str1[i]); }}</script><body onload="getCity()"><form name="form1" method="post" action=""><select name="city" id="city" onchange="getDiqu()"></select><select name="diqu" id="diqu"></select></form></body>getCity.php //得到城市$sql="select city_name from city";$rs=mysql_query($sql);while($rw=mysql_fetch_row($rs)){echo $rw[0]."|";}getDiqu.php$city=$_GET['city'];$sql="select diqu_name from diqu where city='$city'";$rs=mysql_query($sql);while($rw=mysql_fetch_row($rs)){echo $rw[0]."|";} 1.是不是你数据库中地区存的就是江西南昌呢?2.你可以在html文件中加上:<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT" /> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate" /><META HTTP-EQUIV="pragma" CONTENT="no-cache" /> 下面是我写的php与js相关代码,php读取数据库方法可以自己参照下,表是discuz的地区表,比较全,楼主可以去discuz里找,或者我导出来给你php(operate.php):require("config/connect.php");switch(strtolower($_REQUEST["type"])){ case 'loadregion': echo LoadRegion(); break; default:break;}/* load region */function LoadRegion(){ global $db,$dbPrefix; $table=$dbPrefix.'region'; $region_type=(int)$_GET['region_type']; $parent_value=(int)$_GET['parent_value']; $check_value=(int)$_GET['check_value']; if($parent_value==0) $parent_value=1; $db->Query("SELECT region_id,region_name FROM $table WHERE region_type='$region_type' and parent_id='$parent_value'"); $rows=$db->GetRows(); $xmlStr='<?xml version="1.0" encoding="utf-8"?><data>'; switch($region_type){ case 1: $xmlStr.='<item id="0" name="省"></item>'; break; case 2: $xmlStr.='<item id="0" name="市"></item>'; break; case 3: $xmlStr.='<item id="0" name="区"></item>'; break; default:break; } foreach($rows as $row){ if($row['region_id']==$check_value){ $xmlStr.='<item id="'.$row['region_id'].'" name="'.$row['region_name'].'" selected="1"></item>'; }else{ $xmlStr.='<item id="'.$row['region_id'].'" name="'.$row['region_name'].'"></item>'; } } $xmlStr.='</data>'; header("Content-Type:text/xml;charset=utf-8"); return $xmlStr;}JS(Ajax方法多的是,楼主参照下):/* load region */function LoadRegion(region_type,objId,parent_value,check_value){ parent_value=parent_value || ""; Ajax("post","operate.php?type=loadregion®ion_type="+region_type+"&parent_value="+parent_value+"&check_value="+check_value,LoadData); function LoadData(xmlHttp){ if(xmlHttp.readyState==4){ var root=xmlHttp.responseXML.documentElement; var items=root.getElementsByTagName("item"); var length=items.length; if(length>0 && $(objId)){ $(objId).innerHTML=""; for(var i=0;i<length;i++){ var option=document.createElement("option"); option.value=items[i].getAttribute("id"); if(items[i].getAttribute("selected")==1) option.selected="selected"; option.innerHTML=items[i].getAttribute("name"); $(objId).appendChild(option); } } } }}function LoadRegion_clear(id){ if($(id)){ $(id).innerHTML=""; var option=document.createElement("option"); option.value=""; option.innerHTML="请选择区"; $(id).appendChild(option); }} 关于php内存的分配。 $_FILES如何获取文件路径 请大侠们 帮我解释下 safe_mode下函数的UID GID 问题 诡异的APACHE虚拟主机配置 Call to a member function on a non-object,急在线等,分不够再加 一条SQL语句,在线等 thinkphp ->带表什么 请教版主和各位高手,PHP中如何实现MessageBox的带参数弹出提示信息功能,在线等 Session有域的概念吗? thinkphp中在试图中获取二维数组中的平均值 如何获得某个表的外键关系 问个很弱的问题
function createRequest(){
var request;
if(window.XMLHttpRequest){ // For Mozilla, Safari, ...
request = new XMLHttpRequest();
} else if(window.ActiveXObject){ // For Internet Explorer
request = new ActiveXObject("Microsoft.XMLHTTP");
}
return request;
}
function getCity(){
var ajax=createRequest();
var url = "getCity.php";
ajax.open("GET",url,true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status==200) {
updatePageCity(ajax.responseText);
}
}
ajax.send(null);
}
function updatePageCity(str){
var str1 = new Array();
var str2=str.trim();
// alert(str);
str1 =str2.split("|");
//alert(str1);
document.getElementById("city").options[0]=new Option("-请选择大类-", " ");
for(var i=0;i<str1.length-1;i++){
document.getElementById("city").options[i+1]=new Option(str1[i],str1[i]);
}
}
function getDiqu(){
var ajax=createRequest();
var city=document.getElementById("city").value;
var url = "getDiqu.php?city="+city;
ajax.open("GET",url,true);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status==200) {
updatePageDiqu(ajax.responseText);
}
}
ajax.send(null);
}
function updatePageDiqu(str){
var str1 = new Array();
var str2=str.trim();
// alert(str);
str1 =str2.split("|");
//alert(str1);
document.getElementById("diqu").options[0]=new Option("-请选择大类-", " ");
for(var i=0;i<str1.length-1;i++){
document.getElementById("diqu").options[i+1]=new Option(str1[i],str1[i]);
}
}
</script>
<body onload="getCity()">
<form name="form1" method="post" action="">
<select name="city" id="city" onchange="getDiqu()"></select>
<select name="diqu" id="diqu"></select>
</form>
</body>
getCity.php //得到城市$sql="select city_name from city";
$rs=mysql_query($sql);
while($rw=mysql_fetch_row($rs)){
echo $rw[0]."|";
}getDiqu.php$city=$_GET['city'];
$sql="select diqu_name from diqu where city='$city'";
$rs=mysql_query($sql);
while($rw=mysql_fetch_row($rs)){
echo $rw[0]."|";
}
2.你可以在html文件中加上:
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT" />
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate" />
<META HTTP-EQUIV="pragma" CONTENT="no-cache" />
php(operate.php):require("config/connect.php");
switch(strtolower($_REQUEST["type"])){
case 'loadregion':
echo LoadRegion();
break;
default:break;
}
/* load region */
function LoadRegion(){
global $db,$dbPrefix;
$table=$dbPrefix.'region';
$region_type=(int)$_GET['region_type'];
$parent_value=(int)$_GET['parent_value'];
$check_value=(int)$_GET['check_value'];
if($parent_value==0) $parent_value=1;
$db->Query("SELECT region_id,region_name FROM $table WHERE region_type='$region_type' and parent_id='$parent_value'");
$rows=$db->GetRows();
$xmlStr='<?xml version="1.0" encoding="utf-8"?><data>';
switch($region_type){
case 1:
$xmlStr.='<item id="0" name="省"></item>';
break;
case 2:
$xmlStr.='<item id="0" name="市"></item>';
break;
case 3:
$xmlStr.='<item id="0" name="区"></item>';
break;
default:break;
}
foreach($rows as $row){
if($row['region_id']==$check_value){
$xmlStr.='<item id="'.$row['region_id'].'" name="'.$row['region_name'].'" selected="1"></item>';
}else{
$xmlStr.='<item id="'.$row['region_id'].'" name="'.$row['region_name'].'"></item>';
}
}
$xmlStr.='</data>';
header("Content-Type:text/xml;charset=utf-8");
return $xmlStr;
}JS(Ajax方法多的是,楼主参照下):/* load region */
function LoadRegion(region_type,objId,parent_value,check_value){
parent_value=parent_value || "";
Ajax("post","operate.php?type=loadregion®ion_type="+region_type+"&parent_value="+parent_value+"&check_value="+check_value,LoadData);
function LoadData(xmlHttp){
if(xmlHttp.readyState==4){
var root=xmlHttp.responseXML.documentElement;
var items=root.getElementsByTagName("item");
var length=items.length;
if(length>0 && $(objId)){
$(objId).innerHTML="";
for(var i=0;i<length;i++){
var option=document.createElement("option");
option.value=items[i].getAttribute("id");
if(items[i].getAttribute("selected")==1) option.selected="selected";
option.innerHTML=items[i].getAttribute("name");
$(objId).appendChild(option);
}
}
}
}
}
function LoadRegion_clear(id){
if($(id)){
$(id).innerHTML="";
var option=document.createElement("option");
option.value="";
option.innerHTML="请选择区";
$(id).appendChild(option);
}
}