zoukankan      html  css  js  c++  java
  • ajax实现城市联动效果

    还剩余部分未写完,后面的可以自行完成。未进行数据库连接,有需要的自行连接数据库的操作。

    参考代码:

    showCity.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      
        <title>城市联动效果</title>
        
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type="text/javascript">
        
        //创建ajax引擎
        function getXMLHttpRequest(){
    
            var xmlHttp;
            if(window.ActiveXObject){
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                //window.alert("IE");
            }else{
                xmlHttp=new XMLHttpRequest();
            }
    
            return xmlHttp;
        }
        
        //sendRequest
        var xmlHttpRequest;
        function sendRequest(){
            //得到xmlHttpRequest 对象
            xmlHttpRequest=getXMLHttpRequest();
            var url="/ajax/cityList.php";
            var data="province="+$('sheng').value;
            //window.alert(data);
            xmlHttpRequest.open("post",url,true);
            //post方式提交需要加入这句
            xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            //回调函数
            xmlHttpRequest.onreadystatechange=function chuli(){
                
                if(xmlHttpRequest.readyState==4){
                    if(xmlHttpRequest.status=="200"){
                        //取出结果
                        var citys=xmlHttpRequest.responseXML.getElementsByTagName("city");
    
                        $('city').length=0;
                        var myoption=document.createElement("option");
                        myoption.innerText="--城市--";
                        $('city').appendChild(myoption);
    
                        //window.alert(citys.length);
                        //遍历
                        for(var i=0;i<citys.length;i++){
                            //window.alert(citys[i].childNodes[0].nodeValue);
                            var city_name=citys[i].childNodes[0].nodeValue;
                            //创建新元素
                            var myoption=document.createElement("option");
                            myoption.value=city_name;
                            myoption.innerText=city_name;
                            $("city").appendChild(myoption);
                        }
                    }
                }
            }
            //发送数据
            xmlHttpRequest.send(data);
        }
    
        function $(id){
            return document.getElementById(id);
        }
        </script>
    
      </head>
      
      <body>
        <select id="sheng" onchange="sendRequest();">
        <option value="">---省---</option>
        <option value="hunan">湖南</option>
        <option value="jiangsu" >江苏</option>
        </select>
        <select id="city">
        <option value="">--城市--</option>
        </select>
         <select id="county">
        <option value="">--县城--</option>
        </select>
      </body>
    </html>

    cityList.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);
    
        $result="";
        if($province=="hunan"){
            $result="<province><city>长沙</city><city>岳阳</city><city>衡阳</city></province>";
            
        }else if($province=="jiangsu"){
            $result="<province><city>南京</city><city>盐城</city><city>苏州</city></province>";
        }
        
        echo $result;
    ?>

    效果图

  • 相关阅读:
    iOS7——UIControlEventTouchDown延迟响应问题
    View.setTag(key,object)异常:The key must be an application-specific resource id.
    为什么阿里巴巴规定禁止超过三张表 join?
    四种常见的系统架构,目前你处于哪个阶段呢?
    JAVA BigDecimal的相加(累加)
    MyBatis中Like语句使用方式
    mybatis传参的几种方式
    英语说话方式思维和汉语说话的区别
    EXTJs前端传值的几种方式
    oracle+MyBatis批量导入sublist
  • 原文地址:https://www.cnblogs.com/pwm5712/p/3103568.html
Copyright © 2011-2022 走看看