php jq ajax 4个下拉框联动案列,Ajax与Jquery结合数据库做出实现下拉框的二级联动...
这次给大家带来Ajax与Jquery结合数据库做出实现下拉框的二级联动,Ajax与Jquery结合数据库做出实现下拉框二级联动的注意事项有哪些,下面就是实战案例,一起来看一下。
首先我们需要先建立好数据库,将一些数据插入进去
需要两张表:
province:省份表
city: 城市表
如图:
然后再在java中建立相关的实体类与之对应
再然后,我们就能开始做jdbc的操作了public class ConnectionFactory {
private static String driver;
private static String url;
private static String user;
private static String password;
static {
Properties prop = new Properties();
//读取文件
try {
InputStream in = ConnectionFactory.class.getResourceAsStream("./jdbc.properties");
prop.load(in);
driver = prop.getProperty("jdbc.driver");
url = prop.getProperty("jdbc.url");
user = prop.getProperty("jdbc.user");
password = prop.getProperty("jdbc.password");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取连接对象
* @return
*/
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
throw new RuntimeException(e);
}
return conn;
}
/**
* 关闭资源
* @param conn
* @param pstmt
* @param stmt
* @param rs
*/
public static void close(Connection conn,PreparedStatement pstmt,Statement stmt,ResultSet rs){
try {
if (conn != null) {
conn.close();
}
if (pstmt != null) {
pstmt.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
首先我们可以在页面加载的时候获取所有省份的信息,SQL语句如下Connection conn = null;
PreparedStatement pstmt = null;
Province province2 = null;
@Override
public ArrayList findAllPro() {
ResultSet rs = null;
ArrayList pros = null;
try {
String sql = "select id,place from province";
conn = ConnectionFactory.getConnection();
pstmt = conn.prepareStatement(sql);
pros = new ArrayList();
rs = pstmt.executeQuery();
while(rs.next()){
Province province = new Province();
province.setId(rs.getInt(1));
province.setPlace(rs.getString(2));
pros.add(province);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return pros;
}
将查到的数据放到后台,建立一个SelectedServlet类,用于接收查询到的所有省份的信息response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
//创建一个Place对象
ArrayList pros= new Place().findAllPro();
PrintWriter out = response.getWriter();
//将集合直接转换为Json对象
out.write(JSONArray.fromObject(pros).toString());
在这里会用到集合转换Json对象,我们需要导入以下几个包
然后我们开始写前台页面:
省份:
--请选择省份--
城市:
--请选择城市--
然后jQuery代码如下:(由于我导入的jQuery版本比较低,所以使用的方法是getJSON,而不是getJson)$.getJSON("SelectedServlet",function(data,textStatus){
var provinces = data;
var res = "";
for(var i =0;i
res += ""+provinces[i].place+"";
}
$("#province").append(res);
});
这样就能在页面加载的时候获取到数据
然后我们再来做联动,首先给下拉框添加一个change事件,然后获取选中的信息,将选中的信息发送到另一个CityServlet中//下拉框改变时触发的事件
$("#province").change(function(){
var seled = $("option:selected").html();
$("span").html(seled);
$.getJSON("CityServlet",{
"province":encodeURI(encodeURI(seled))
},function(data){
$("#city").html("");
var citys = data;
var res = "";
for(var i = 0;i
res += ""+citys[i].place+"";
}
$("#city").append(res);
});
});
服务器通过获得的信息通过sql语句查询出来,SQL代码如下:public ArrayList findAllCityByPro(String name) {
ResultSet rs = null;
ArrayList citys = null;
try {
//通过名字获得所有值
String sql = "select c.city_place from city c ,"
+ "province p where c.province_id = "
+ " (select id from province where place = '"+ name +"') "
+ " and c.province_id = p.id";
conn = ConnectionFactory.getConnection();
pstmt = conn.prepareStatement(sql);
citys = new ArrayList();
System.out.println(sql);
rs = pstmt.executeQuery();
while(rs.next()){
City city = new City();
city.setPlace(rs.getString(1));
citys.add(city);
}
System.out.println(citys);
} catch (SQLException e) {
e.printStackTrace();
}
return citys;
}
将查询到的数据发送到后台,后台接收到数据后将其转换为Json对象,并通过回调函数发送到前台,然后前台就可以通过事件直接获取到数据,而不用各种跳转页面,这就是Ajax(Asynchronous Javascript And XML),protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
// String proName = "浙江";
String proName = URLDecoder.decode(URLDecoder.decode(request.getParameter("province"), "utf-8"),
"utf-8");
ArrayList citys= new Place().findAllCityByPro(proName);
PrintWriter out = response.getWriter();
out.write(JSONArray.fromObject(citys).toString());
}
至于显示页面的代码也在前面写到jQuery语句中了
效果如下:
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
php jq ajax 4个下拉框联动案列,Ajax与Jquery结合数据库做出实现下拉框的二级联动...相关推荐
- php jq ajax 4个下拉框联动案列,AJAX_AJAX实现下拉框联动,想当年,为了实现三级联动, - phpStudy...
AJAX实现下拉框联动 想当年,为了实现三级联动,找个js高手些了N多代码才搞定,但是很慢,因为一次要将所有的选项取来,然后排序,查找动态显示. 现在使用AJAX真是太方便了,下面做了个简单例子,实现 ...
- mysql数据库断电恢复_MySQL数据库InnoDB引擎下服务器断电数据恢复方法
说明: 线上的一台MySQL数据库服务器突然断电,造成系统故障无法启动,重新安装系统后,找到之前的MySQL数据库文件夹. 问题: 通过复制文件的方式对之前的MySQL数据库进行恢复,发现在程序调用时 ...
- jquery ajax java二级联动_使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例...
首先我们需要先建立好数据库,将一些数据插入进去 需要两张表: province:省份表 city: 城市表 如图: 然后再在java中建立相关的实体类与之对应 再然后,我们就能开始做jdbc的操作了 ...
- html的样式下拉框的联动,Web框架Ajax实现html下拉框联动
说明 页面代码 数据模型 Ajax联动 后台action 结语 说明 我们通过给两个下拉列表赋值案例来说明,下拉框1值通过属性值绑定AvailableCategories直接从后台获取,下拉框2值Se ...
- 利用ajax实现二级联动下拉框6,Ajax实现二级联动菜单
本文实例为大家分享了Ajax二级联动菜单的具体代码,供大家参考,具体内容如下 index.jsp 二级菜单联动演示 var req; window.οnlοad=function() {//页面加载时 ...
- addoption php,无忧建站-ajax+php无刷新二级联动下拉菜单(省市联动)源码
/** * ajax无刷新二级联动下拉菜单(省市联动) * * @author arcow * @version 1.0 * @lastupdate 2005-12-29 * */ ...
- HTML下拉框、二级联动 select多级联动
html + ajax +php 二级联动下拉框 <!DOCTYPE html> <html> <head> </head> <style> ...
- select下拉框二级联动
采用Layui框架 两种方法实现,差别不大 一.编写jsp代码 二.编写后台代码(方法一) 2.1 工具类 2.2 dao层 2.3 编写对应xml 2.4 service层 2.5 serviceI ...
- android加载时二级联动点击二级联动,Android实现联动下拉框二级地市联动下拉框功能...
日常使用软件中,为了方便且规范输入,会使用到下拉框进行输入,如注册时生日选项,购物时的地址输入,都会用到下拉框,今日笔者为了巩固已学的知识,实现了二级联动下拉框用作回顾及分享给求知的新手. 思路/步骤 ...
最新文章
- es6 Module语法
- tf.reverse_sequence
- 提高收益 酒店大数据之客户数据收集
- 第二届Byte Cup来袭,赢得2万美元奖金,登上字节跳动面试直通车
- API网关—Spring Cloud Zuul
- sqlalchemy外键和relationship查询
- 信息学奥赛一本通(1047:判断能否被3,5,7整除)
- 华为提交“NovaBuds”商标申请:nova要出耳机了?
- 虚拟资源拳王公社:什么是虚拟资源自动化?为什么虚拟产品可以自动化赚,虚拟资源自动化有什么
- Kettle下载安装使用
- 基于51单片机的智能温控风扇(程序+仿真+原理图)
- SuiteCRM图片上传(自定义控制器)
- CSS知识全面汇总——速查手册
- 树莓派搭建博客/网站教程
- JAVA基础_ Scanner扫描仪
- linux startx xinit
- 数据挖掘机器学习[六]---项目实战金融风控之贷款违约预测
- MacBook 通过Boot Camp安装win7双系统时提示缺少所需的CD/DVD驱动器设备驱动程序。
- 你有没有遇到叫二狗子的那个哥们?
- 搭载地平线征程2芯片的长安UNI-V正式亮相;美通社再度成为国际消费类电子产品展官方合作伙伴 | 全球TMT...
热门文章
- 基于StringTemplate的视图
- 编译安装MySQL5.6失败的相关问题解决方案
- spring mvc异常统一处理(ControllerAdvice注解)
- traceback异常打印
- Windows下运行rabbitmqctl 相关命令(如rabbitmqctl stop)报错:Error: unable to perform an operation on node解决方案
- 【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx
- mysql 资源占用过高分析和解决方法
- 日常工作问题解决:centos7下配置网卡以及查询网卡UUID
- python 异常处理中try else语句的使用
- 如何更改微调器的文字大小和文字颜色?