求一 个
PHP AJAX二级联动-城市地区的事例,要完全代码,
谢谢

解决方案 »

  1.   

    给你详细代码!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]."|";
    }
      

  2.   

    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" />
      

  3.   

    下面是我写的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&region_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);
    }
    }