原生js使用ajax实现省市县三级联动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ajax</title>
    <script>
        window.onload=function(){
            var xhr=new XMLHttpRequest();
            xhr.open(‘get‘,‘index.php?type=sheng‘,true);
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                   var data=eval(xhr.responseText);
                   var str=‘<option value="0">--请选择省--</option>‘;
                   for(var i=0; i<data.length; i++){
                        str+=‘<option value="‘+data[i].provinceID+‘">‘+data[i].province+‘</option>‘;
                   }
                    document.getElementById(‘province‘).innerHTML=str;
                    //console.log(data[0].province);
                    //alert(data);
                }
            }
            xhr.send();
            //市
            var province = document.getElementById(‘province‘);
            province.onchange=function(){
                var value=this.value;
                xhr.open(‘get‘,‘index.php?type=shi&provinceID=‘+value,true);
                xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                   var data=eval(xhr.responseText);
                   var str=‘<option value="0">--请选择市--</option>‘;
                   for(var i=0; i<data.length; i++){
                        str+=‘<option value="‘+data[i].cityID+‘">‘+data[i].city+‘</option>‘;
                   }
                    document.getElementById(‘city‘).innerHTML=str;
                }
            }
            xhr.send();
            }
            //县
            var area = document.getElementById(‘city‘);
            city.onchange=function(){
                var value=this.value;
                xhr.open(‘get‘,‘index.php?type=area&cityID=‘+value,true);
                xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                   var data=eval(xhr.responseText);
                   var str=‘<option value="0">--请选择县--</option>‘;
                   for(var i=0; i<data.length; i++){
                        str+=‘<option value="‘+data[i].areaID+‘">‘+data[i].area+‘</option>‘;
                   }
                    document.getElementById(‘area‘).innerHTML=str;
                }
            }
            xhr.send();
            }

        }
    </script>
</head>
<body>
    <select id="province">
            <option value="0">--请选择省--</option>
    </select>
    <select id="city">
             <option value="0">--请选择市--</option>
    </select>
    <select id="area">
            <option value="0">--请选择县--</option>
    </select>
</body>
</html>
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";

// 创建连接
$mysqli = new mysqli($servername, $username, $password);

// 检测连接
if ($mysqli->connect_error) {
    die("连接失败: " . $mysqli->connect_error);
}
$mysqli->select_db(‘three‘);
$mysqli->query(‘set names utf8‘);

if($_GET[‘type‘]==‘sheng‘){
    $list=$mysqli->query(‘select * from jing_province‘);

    while($row=$list->fetch_array()){
       $data[]=$row;
    }
    echo json_encode($data);
}elseif($_GET[‘type‘]==‘shi‘){
    $father=$_GET[‘provinceID‘];
    $list=$mysqli->query(‘select * from jing_city where father=‘.$father.‘ ‘);

    while($row=$list->fetch_array()){
       $data[]=$row;
    }
    echo json_encode($data);
}else if($_GET[‘type‘]==‘area‘){
    $father=$_GET[‘cityID‘];
    $list=$mysqli->query(‘select * from jing_area where father=‘.$father.‘ ‘);

    while($row=$list->fetch_array()){
       $data[]=$row;
    }
    echo json_encode($data);
}

原文地址:https://www.cnblogs.com/mengor/p/8275856.html

时间: 2024-10-07 20:00:18

原生js使用ajax实现省市县三级联动的相关文章

使用原生js写ajax

// 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined"){ // 非IE6浏览器 return new XMLHttpRequest(); }else if(typeof ActiveXObject != "undefined"){ // IE6浏览器 var version = [ "MSXML2.XMLHttp.6.0"

通过原生js的ajax或jquery的ajax获取服务器的时间

在实际的业务逻辑中,经常是与时间相关的,而前端能获得的时间有两个:客户端的时间,服务器的时间.客户端时间通过 javascript中的Date对象可以获取,如 Java代码   var dt = new Date(); var tm = dt.getTime(); 那么tm就是客户端的时间,另外也可以通过对应的getFullYear(),getMonth(),getDate()取到对应的年月日等...但这个时间可靠吗?好吧,那取服务器时间吧经常用到的是后台写一个php,jsp,cgi,asp..

asp.net(c#)用Ajax调用web 服务实现省市县三级联动

1.先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时.而且还多次出现outofmemoryerror 错误.最后将硬件升级为I7 4770.16G内存.2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误. 所以不推荐在虚拟机里面跑. 2.根据官方文档配置编译环境: 官方文档说的是在"发布包/Sof

原生JS封装AJAX

今天我们来说说利用原生JS封装AJAX. jquery框架的AJAX方法确实很好用,但有时候我们写的页面需要引入多个JS插件,不一定哪个插件就会和jquery发生冲突,导致jquery用不了了.或者页面比较简单,不需要加重浏览器的负担,这时我们自己封装一个AJAX就是一个很好的办法. //将数据转换成 a=1&b=2格式;function json2url(json){   var arr = [];   //加随机数防止缓存;   json.t = Math.random();   for(v

JS省市县三级联动菜单

<html> <head> <title>JS省市县三级联动菜单丨潜水曝气机</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style> body,select { font-size:9pt; font-family:Verdana; } a { color:red; text-dec

原生JS实现Ajax及Ajax的跨域请求

  前  言          如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. 而,其中,用得最多的应该苏算是JQuery的Ajax了.但是,今天,影子向大家介绍的是原生js的Ajax,及跨域请求. 一. JQuery的Ajax 首先,先回忆下JQuery的Ajax写法: $.ajax({ url: , type: '', dataType: '', data: { }, s

Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码

前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function(){ //获取当前输入 的值 var value=$(this).val(); //偷偷摸摸发起请求 var url="${pageContext.request.contextPath }/like" var params="name="+value; //先清空下方

原生JS的Ajax技术

1.同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待  卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.ajax运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到 服务器端, 在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后, ajax引擎会监听到ajax的状态改变,触发你设置的事件,从而执行自定义的js逻辑代码完成某种页

原生js中用Ajax进行get传参

原生js中用Ajax进行get传参 案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> input{ width:600px; height:50px; display:block; } </style> </head> <body> <input ty