使用ajax实现城市下拉框

在博客园学习了很多实用的东西,现在该慢慢开始自己写写博客文章, 由于本人水平有限,刚走出校园的小菜鸟,另外,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你

的脚印,欢迎评论!

有什么问题,可以互相探讨,希望对各位有所帮助。开始讲东西吧

一个现实城市下拉框的界面

html代码:

 <table>
            <tr>
                <td><h5>城市下拉框</h5></td>
                <td>
                    <select id="selNation" style="width:130px">
                        <option>请选择省市/其他...</option>
                    </select>
                        <select id="selCity" style=" width:130px">
                        <option >请选择城市/其他...</option>
                    </select>
                        <select id="litel" style=" width:130px">
                        <option>请选择县/区...</option>
                        </select>
                </td>
            </tr>
</table>

js代码:我这里使用的jquery操作Dom和ajax,所以要导入jquery脚本,这里就不提供了,到官方网站下载都有

$(function () {
    GetCity(0);//页面加载时就现实数据库第一个数据,一定要加上
    $("#selNation").change(function () {
        // 当省级改变的时候,让市级和县级文本清空
        $("#selCity option").remove();
        $("#litel option").remove();
        //获得省级的id
        var id = $("#selNation option:selected").attr("id");
        //查询该省级的市级数据
        GetCity(id, ‘city‘);
    })
    $("#selCity").change(function () {
        // 当市级改变的时候,让县级文本清空
        $("#litel option").remove();
        //获得市级的id
        var id = $("#selCity option:selected").attr("id");
        //查询该省市级的县级数据
        GetCity(id, ‘county‘);
    })
    //解决类似北京只有一个城市的情况
    $("#selCity").click(function () {
        $("#litel option").remove();
        var id = $("#selCity option:selected").attr("id");
        GetCity(id, ‘county‘);
    })
});
function GetCity(pid, c) {
    var LoadCityUrl = $("#LoadCityUrl").val(); //获得后台要访问的url,这里访问的就是上面后台代码所在的类中
    //执行ajax请求
    $.ajax({ url: LoadCityUrl, data: "id= " + pid, type: ‘get‘, success: function (res) {
        var arr = eval(res); //返回的json数据一定要执行evel()方法才能使用循环读取数据,这里很重要;;;
        $.each(arr, function (key, value) {
            if (pid == "0") {//加载省级级下拉框(数据库里面省级的pid都为0)
                $("#selNation").append(" <option id=‘" + value.tb_AreaId + "‘>" + value.AreaName + "</option>");
            }
            else {
                if (c == ‘city‘) {//加载市级下拉框
                    $("#selCity").append(" <option id=‘" + value.tb_AreaId + "‘>" + value.AreaName + "</option>");
                }
                else {//加载县区下拉框
                    $("#litel").append(" <option id=‘" + value.tb_AreaId + "‘>" + value.AreaName + "</option>");
                }
            }
        })
    }
    });
}

后台查询数据库的代码:

1.返回json数据

 #region 收货地址=>显示城市下拉框+SelectNation(int id)
        /// <summary>
        /// 收货地址=>显示城市下拉框
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public string SelectNation(int id)
        {
            //返回json数据 类似:("[{ ‘name‘: ‘广东‘, ‘id‘: ‘1‘ }, { ‘name‘: ‘北京‘, ‘id‘: ‘2‘ }, { ‘name‘: ‘湖南‘, ‘id‘: ‘3‘ }]")
            List<tb_Area> list = null;
            list = mbsc.tb_Area.Where(c => c.AreaPid == id).ToList();//我这里使用的是linq表达式查询数据,你也可以用其他方式查询数据
            //如果id不为空就是返回省份的城市列表
            System.Web.Script.Serialization.JavaScriptSerializer Json = new System.Web.Script.Serialization.JavaScriptSerializer();
            string str = Json.Serialize(list);//json序列化集合
            return str;
        }
 #endregion

2.模型代码

public class tb_Area
    {
        public int tb_AreaId { set; get; }
        public string AreaName { set; get; }
        public int AreaPid { set; get; }
    }

数据库

http://pan.baidu.com/s/1gdw1Osj点击链接下载,这里是txt文件,导入数据库是用的是逗号分隔符,注意数据库子字段的命名即如图

运行下成功页面

好了 ,搞定了,要是有什么问题欢迎评论!!!

时间: 2024-10-05 23:46:07

使用ajax实现城市下拉框的相关文章

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)

ajax 遍历select 下拉框

html :<select id="type"   > </select> js代码: <script type="text/javascript">  //动态绑定下拉框项          function addnotice() {              $.ajax({                  url: "${pageContext.request.contextPath}/dictionary/j

ThinkPHP中ajax绑定select下拉框无法显示

html代码: 控制器代码: 其中的<option value="{$vo.gradeId}">{$one.gradeName}</option> 在操作过程中无法自动填充,下拉框有位置,却无法填充数据库的原因是 数据库的命名统一 一致,不能使用驼峰命名法来命名数据库的表的名字. 可以使用下划线,横线来命名表.

省份城市下拉框联动简单实例实现方法

效果如下 //定义字典 Dictionary<string, string> Address = new Dictionary<string, string>(); void loadData() { //这是你要添加的数据 //也可以选择动态添加但是考虑到数据不多不影响性能就这么做了 Address.Add("绵阳", "四川"); Address.Add("成都", "四川"); Address.A

SSM + AJAX + JSON 动态下拉框

前台页面 <%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3

jQuery动态生成&lt;select&gt;下拉框

前一阵在项目里需要动态生成下拉框,找了一下用jQuery实现比较方便,这里整理一下. 下文所述方法只是本人在项目中遇到问题的解决方法,场景较为简单,也希望能帮助有需要的朋友 1.动态生成下拉框的两种方式 (1)将数据放在model中,JSP页面用EL表达式${}取出,该方式缺点是数据更改时必须刷新整个页面,本文不过多描述. (2)就是本文要说的jQuery动态生成了,该方式适合数据频繁变动的场景. 2.<select>组成 <select> <option value=”aa

jquery模拟可输入的下拉框

//页面html <div id="select" class="select" > <ul> <c:forEach items="${movieCityList}" var="cy" varStatus="st"> <li> <a href="javascript:void(0)" onclick="selectOptio

Selenium_WebDriver下拉框练习_Java

下拉选择框是常见的WEB页面元素,一般的下拉框tagName为Select,还是以某财BBS为例,它的下拉框源码如下所示,这个下拉框一开始只显示省份选择,选择完之后才会显示属于该省的城市的选择框. <select id="resideprovince" class="ps" tabindex="1" onchange="showdistrict('residecitybox', ['resideprovince', 'reside

selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)

本机环境:xamppv3.2.1+ecshop3.0  1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport timedriver=webdriver.Chrome()driver.implicitly_wait(10) #自动延时10sdriver.get("http://localhost/ecshop")# driver.find_element_by_xpath('//div[@class