zoukankan      html  css  js  c++  java
  • ajax经典案例--省市联动

    ajax的省市联动案例

    如果我们的代码比较复杂,可以通过file_put_contents来输出信息到某个日志。

    在一个元素中添加另一个元素使用的方法是:appendChild()。

    函数appendChild()写错是有问题的。不要写错appendChlid()了。

    showCities.php

    <html>
    <head>
    <meta http-equiv="content-type"content="text/html;charset=utf-8"/>
    <script language="javascript" type="text/javascript">
    
        //创建ajax引擎
        function getXmlHttpObject(){
            var xmlHttpRequest;
            if(window.ActiveObject){
                xmlHttpRequest=new ActiveObject("Microsoft.XMLHTTP");
            }else{
                xmlHttpRequest=new XMLHttpRequest();
            }
            return xmlHttpRequest;
        }
    
        var myXmlHttpRequest="";
        function getCities(){
            myXmlHttpRequest=getXmlHttpObject();
            
            if(myXmlHttpRequest){
    
                var url="/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){
                    //取出服务器回送的数据
    
                    var cities=myXmlHttpRequest.responseXML.getElementsByTagName("city");
    
                    //解决方案是添加如下代码
                    $("city").length=0;
                    //犯错:$("city").length=0;写出$("city").lenth=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;
                        //window.alert(city_name);
                        //创建新的元素option
                        var myOption=document.createElement("option");
                        myOption.value=city_name;
                        myOption.innerText=city_name;
                        //添加到
                        $("city").appendChild(myOption);
                        //在一个元素中添加另一个元素使用appendChild();
    
                    }
                }
            }
    
        }
    
        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>
        </select>
        <select id="city">
        <option value="">--城市--</option>
        </select>
    
        <select id="county">
        <option value="">--县城--</option>
        </select>
    </select>
    </body>
    </html>

    showCitiesPro.php

    <?php
        
        //服务器端
    
        //这里两句话很重要,第一句话告诉浏览器返回的数据是xml格式
        header("content-Type:text/xml;charset=utf-8");
        //告诉浏览器不要缓存数据
        header("Cache-Control:no-cache");
    
        //接收用户的选择的省的名字
        $province=$_POST['province'];
    
        //ajax调试很困难
        //如何在调试过程中,看到接收到的数据。
    
        file_put_contents("D:/install/wamp/www/mylog.log",$province."
    ",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;
    
    ?>
  • 相关阅读:
    如何设置Xcode模拟器地图的当前位置
    序列化框架MJExtension详解 + iOS ORM框架
    ios 容错处理JKDataHelper和AvoidCrash
    2017.5.3最新申请公司开发者账号整个流程(包括邓白氏申请详细流程带截图)
    详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形...)
    Mac系统安装和配置tomcat步骤详解
    Mac下intellij IDEA新建javaweb项目
    Apple Mach-O Linker Warning 警告解决办法
    项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
    iOS 中 延迟操作四种方式
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9818408.html
Copyright © 2011-2022 走看看