基于thinkphp和ajax的省市区三级联动

练习,就当练习。

省市区三级联动,样式如下图所示:

1,导入两个js文件并且导入数据库文件。

两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件。

2,建一个index.html

<div>
    <label>所在地点</label>
    <select name="province_id" id="province_id" style="width:150px;">
        <option>请选择</option>
        <volist name="province_list" id="province">
            <option  value="{$province.region_id}">{$province.region_name}</option>
        </volist>
     </select>
     <select name="city_id"  id="city_id" style="width:150px;" >
         <option>请选择</option>
         <volist name="city_list" id="city">
             <option value="{$city.region_id}" selected="selected">{$city.region_name}</option>
         </volist>
      </select>
      <select name="district_id"  id="district_id" style="width:150px;" >
          <option value="0">请选择</option>
          <volist name="dis_list" id="dis">
           <option value="{$dis.region_id}" selected="selected">{$dis.region_name}</option>
          </volist>
       </select>
</div>

写ajax啦,一个是获取市,一个是获取县区。

<script>
    $("#province_id").change(function(){
    var province_id=$(this).val();
    $.ajax({
        url:‘/city/index.php/Home/Index/get_citys‘,
        Type:"POST",
        data:"province_id="+province_id,
        dataType:"json",
        success:function(data){
            var city = data.city;
            var option=$("<option></option>");
            $(option).val("0");
            $(option).html("请选择");
            var option1=$("<option></option>");
            $(option1).val("0");
            $(option1).html("请选择");
            $("#city_id").html(option);
            $("#district_id").html(option1);
            for(var i in city){
                var option=$("<option></option>");
                $(option).val(city[i][‘region_id‘]);
                $(option).html(city[i][‘region_name‘]);
                $("#city_id").append(option);
            }
        }

    });
});
</script>
<script>
$("#city_id").change(function(){
    var city_id=$(this).val();
    $.ajax({
        url:‘/city/index.php/Home/Index/get_district‘,
        Type:"POST",
        data:"city_id="+city_id,
        dataType:"json",
        success:function(data){
            var district = data.district;
            var option=$("<option></option>");
            $(option).val("0");
            $(option).html("请选择");
            $("#district_id").html(option);
            for(var i in district){
                var option=$("<option></option>");
                $(option).val(district[i][‘region_id‘]);
                $(option).html(district[i][‘region_name‘]);
                $("#district_id").append(option);
            }
        }
    });
});
</script>

2,后台代码很重要。

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    //获取省和直辖市
    public function index(){
        $listObj = M(‘region‘);
        $whereprovince[‘top_parentid‘] = 0;
        $listprovince = $listObj->where($whereprovince)->select();
        $this->assign("province_list",$listprovince);

        $this->display();
    }
    //获取地级市
    public function get_citys(){
        $listObj = M(‘region‘);
        $where[‘top_parentid‘] = I(‘province_id‘);
        $where[‘level‘] = 2;
        $list = $listObj->where($where)->select();
        $data=array(‘status‘=>0,‘city‘=>$list);
        header("Content-type: application/json");
        exit(json_encode($data));
    }
    //获取地级县
    public function get_district(){
        $listObj = M(‘region‘);
        $where[‘parent_id‘] = I(‘city_id‘);
        $where[‘level‘] = 3;
        $list = $listObj->where($where)->select();
        $data=array(‘status‘=>0,‘district‘=>$list);
        header("Content-type: application/json");
        exit(json_encode($data));
    }

下面是核心代码和数据库文件,需要的下载就可以了。

http://pan.baidu.com/s/1kU2RDTP

时间: 2024-10-14 04:29:16

基于thinkphp和ajax的省市区三级联动的相关文章

第117天:Ajax实现省市区三级联动

Ajax实现省市区三级联动 思路: (1)首先获取省份信息 (2)发起Ajax请求,注意dataType中的T大写 (3)封装回调函数,回调函数success中用$.each循环每一条数据,动态创建option,并将数据添加到option中 (4)定义点击事件,注意点击省调用的是city函数,点击市调用的是area函数 (5)注意获取市信息用的是省编码(pCode),获取区用的是市编码(cCode). 1.HTML代码 1 <!doctype html> 2 <html lang=&qu

基于ThinkPHP+AJAX的省市区三级联动

练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2,建一个index.html <div> <label>所在地点</label> <select name="province_id" id="province_id" style="width:150px;"

PHP+Ajax+JS省市区三级联动

     基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省.市.区获取方法类似,PHP中通过参数不同执行不同的select语句.  index.html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1

【2017-6-7】AJAX异步刷新 省市区 三级联动

这里调用的是jquery1.7.1 需要数据库的支持 下面具体看代码 前面界面只需要三个下拉列表就OK <form id="form1" runat="server"> <div> <select id="st1"> <option value="null">加载中...</option> </select> <select id="st2

ajax + php 省市区三级联动

效果图: 数据库表: html代码 <tr><td colspan="2">        <p class="short-input ue-clear">                    <label>所在地:</label>            <select name="provinceid">            <?php echo Ousuclas

ajax省市区三级联动

jdbc+servlet+ajax开发省市区三级联动 技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动 特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等 宗旨:从实战中学习 博客讲解是按照两级联动,但下载的资源是三级联动含sql文件. 效果图: 首页核心代码: [html] view plain copy <% List<HashMap<String,Object>> maps = ConnectionUtil.findProvinces(); pag

Ajax来实现下拉框省市区三级联动效果(服务端基于express)

//服务端JS代码: //提供服务端的处理 const express = require('express'); const fs = require('fs'); const app = express(); //载入选择城市的页面 app.get('/',function(req,res){ res.sendFile( __dirname + "/7.city.html" ); }); //获取所有的省份 app.get('/province',function(req,res)

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化. 使用chinastates表查询 Ajax加载数据 1.这是chinastates表 2.做一个简单php:Ajax_eg.php <!DOCTYPE html><html>    <head>        <meta c

AJAX省市区三级联动下拉列表实现 JAVA开发

转载自:http://blog.sina.com.cn/s/blog_a48af8c001011lx1.html 例子--District Picker            http://fengyuanchen.github.io/distpicker/ 此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表: 代码如下: 建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为: $(document).ready(function(){