ajax下拉框回显数据_JavaEE学习——Ajax实现三级联动省市区

v2-3ac7f8ecaff9f768e8e9efc7e1d219bc_1440w.jpg?source=172ae18b

效果就是当我们点击选择一个省的时候,市也会自动的变化为该省下面所有的市,当选择一个市 的时候,对应的我们可以选择对应的县区。

功能需求:页面中有三个下拉框选项,分别为省下拉框,市下拉框,区/县下拉框。

技术分析:ajax技术+jsp+servlet+jdbc(这里我也用了Spring和MyBatis实现,文末附两种代码)

选择省,则市下拉框中出现对应的该省下的市信息,选择市,则区/县下拉框中出现对应的该市下面的区/县信息

v2-c0d3b96fefe6235d9460cb1ffd924e7b_b.jpg

v2-509cec102477ede59e559d1597184b25_b.jpg

步骤:首先得在数据库中有数据,这里的测试数据不用我们自己写,直接运行就好了,测试数据的sql在文章末尾连接我会和代码一起发送。

v2-175ed6d37b3f5ff196e5ce5355497277_b.jpg

v2-0a68ee576d0872fd152707bb528ae631_b.jpg

2、我们来看代码:

(a、首先是,前端页面的显示,有3个下拉框,并且都加了样式,在div中,让他们居中

v2-1f256509e7e69d11a99b9b37c70c70ba_b.jpg

(b。然后是导入jQuery

v2-75091079c533fd95f5d1d5c81da93bd3_b.png

(c,我们知道,当我们点击一个下拉框选择一个值的时候,实际上是向服务器发送了一个请求,局部刷新,使用Ajax技术,但是加载完页面以后,我们就得有省的数据供我们选择,所以加载完之后就得发一个请求去服务器

v2-58055665ba293f6259a1f94d375c3bed_b.jpg

“area?op=selS”是访问的url路径,这里我的AreaServlet路径是/area,后面的op=selS是附加的参数,因为我有一个BaseServlet,我的AreaServlet继承它,不用每个创建的Servlet都写service()方法,直接获得对应的方法名,就可以通过反射去调用执行

v2-cfd968781650755d2f4f43c972d037e2_b.jpg

d)后面的步骤依旧是增删改查的常规步骤,servlet层调用业务层service,service层调用访问数据库的那层(mapper层or导层),因为我这里使用的是MyBatis,所以也就是mapper层,然后去数据库查询

这里需要注意的是,我们的数据都在一张表中,当parentid=0的时候,显示的都是省和直辖市的数据

v2-e69e9ebcbff35c7e380b3678619e3fa1_b.jpg

所以SQL语句是这样的

v2-e21857b061219015342337bc12cbfc4c_b.jpg

所以我们第一次请求时的参数是0

v2-c4f24e57af0961ec3016f51b40637a5f_b.jpg

然后给省级的框绑定change事件,当我们改变了框里的值,则再向服务器发送一个Ajax的请求,这次请求的值是选中省的那个值

v2-d7f87777ba5a9bca9e7084ab68535847_b.jpg

接着又给市的绑定改变的change事件

v2-f6a2bd7f863b3b4ce1761c88c7903eee_b.jpg

我们要注意两点就是,当我们加载完页面之后,实际上第一次发了一个请求,请求回来只会让第一个省的框里面有值,当我们选中了省的值,才会去改变市里面的值,当市里面的值改变才会去改变区县里面的值,所以我们需要在第一次请求的函数中调用改变了省的值的函数,同理,市里面也得调用改变了市里面的函数,这样才能让我们第一次访问的时候不是只有省级的框有值

v2-da9a978628461884751c767926f6d497_b.jpg

v2-6dec1633560f1825b1644d7fb61ea8c2_b.jpg

对了,不要忘记每次选下拉框值的时候清空原有内容,还有一点是重复代码太多,我们可以封装共有的,变化的数据可以通过参数传递,下面附上JDBC和使用框架实现的代码:

Ajax三级联动实现省级市区​pan.baidu.com

提取码:8ky0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值