Jquery+AJAX实现(省份绑定城市)

准备阶段:
开发工具:idea
语言: Java
JQ版本号: jquery-3.4.1.min.js (注意不要使用slim版本,该版本无法使用AJAX)
其他: 数据库MySQL、Mybatis
前端技术:Thymeleaf

一、前段HTML页面预览及代码展示(这里只做展示,内容与省份和城市无关)


1.png

==========================代码=========================

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>性能管理流程</title>
</head>
<script type="text/javascript" th:src="@{/js/jquery-3.4.1.min.js}" src="../static/js/jquery-3.4.1.min.js"></script>
<body>

    <div style="height: 100px; width: 100%; background-color: #adacac; border: 2px solid #78b6da;" >
        配置类别:&nbsp<select id="select1">
                        <option value="0">--请选择--</option>
                        <option value="1">流程角色配置</option>
                        <option value="2">流程数据配置</option>
                     </select>&nbsp&nbsp
        配置列表:&nbsp<select id="select2">
                        <option value="0">--请选择--</option>
                     </select>
    </div>

    <script>
        $('#select1').change(function () {
            var value = $(this).val();
            if(value) {
                $.ajax({
                    type: "get",        //调用方式: get、post、put、delete 等
                    url: "/queryPojo",    // 调用的RequestMapping 的URL
                    data: {"id": value},  //给controller层传入当前页面选项的value值,以便数据库查询
                    dataType: "json",   //指定ajax接收类型为json
                    success: function (data) {
                        // 把原选项的数据删除,重新添加。这样做是为了在已选中一个标签后切换到别的标签时不会累计添加
                        $('#select2 option').remove();
                        $('#select2').append("<option value = 0 >" +"--请选择--" + "</option>");

                        var lists = data;  //可以不写,直接遍历data
                        for (i in lists) {
                            $('#select2').append("<option value =" + lists[i].id + ">" + lists[i].name + "</option>");
                        }
                    }
                });
            }
        })
    </script>

</body>
</html>

二、控制层代码

这里JSON的依赖为:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier>
</dependency>

import com.zrr.xngl.pojo.Pojo1;
import com.zrr.xngl.service.XnglService;
import net.sf.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * @auther ZengSakae
 * @date 2019-12-10 17:31
 */


@RestController
public class XnglController {

    @Autowired
    XnglService xnglService;

    @RequestMapping(value = "/queryPojo")
    public String queryPojo2(HttpServletRequest request, HttpServletResponse response) throws Exception{

        // 设置为utf-8,避免解析出现乱码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json");

        int id = 0;

        //判断传入的id是否为空,这里只是做校验
        if(null != request.getParameter("id") || !"".equals(request.getParameter("id"))){
            id = Integer.parseInt(request.getParameter("id"));
        }

        List<Pojo1> lists =  xnglService.queryAllPojo(id);

        JSONArray jsonArray = JSONArray.fromObject(lists);  //把得到的实体类List集合转换为json数据

        String result = jsonArray.toString(); //把json数据转换成json格式的String类型

        return result;  //返回这个String给前端页面

    }

}

三、业务层service代码
很简单,不解释

import com.zrr.xngl.mapper.XnglMapper;
import com.zrr.xngl.pojo.Pojo1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @auther ZengSakae
 * @date 2019-12-10 17:35
 */

@Service
public class XnglService {

    @Autowired
    XnglMapper xnglMapper;

    public List<Pojo1> queryAllPojo(Integer id) {
        return xnglMapper.getAllPojo(id);
    }

}

四、Mapper的代码(替代了dao层)
注意在参数前面加注释@Param 指定下别名

import com.zrr.xngl.pojo.Pojo1;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @auther ZengSakae
 * @date 2019-12-10 17:38
 */

@Repository
public interface XnglMapper {
    List<Pojo1> getAllPojo(@Param("id") Integer id);
}

五、Mapper.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zrr.xngl.mapper.XnglMapper">

    <select id="getAllPojo" resultType="com.zrr.xngl.pojo.Pojo1">
        select * from collocation_column cc
        where cc.type_id = #{id}
    </select>

</mapper>

六、其他注意事项
主方法添加注释: @MapperScan("com.zrr.xngl.mapper") 指定mapper的路径
否则启动报错

以上便是springboot下 Ajax的使用方法....
静态资源JQ的包记得放在static目录下,否则项目部署后报错Not Found 404

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容