SSM框架下的简单Ajax应用(附json数据传输乱码解决办法)

本文介绍了在SSM框架下使用Ajax进行异步刷新的方法,重点关注了jQuery库的引用和Ajax请求参数设置。同时,文章讨论了前后台json数据传输时可能出现的乱码问题,建议检查jQuery库导入路径,确保数据正确传输。为了解决乱码,提到了通过注解驱动配置和引入Jackson依赖来完成对象到json的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用jquery库中的方式实现异步刷新,注意库的引用地址问题,如果出现了找不到jquery的404错误,首先考虑导入路径问题
$.ajax({})含三个参数:

  • url 请求地址
  • data 这里是使用键值对的方式,包括后台接收到的参数名跟键名相同
  • success 执行成功后进行的操作,一般是对获取到的数据进行操作

前端视图的JS代码:

    <script src="js/jquery-3.5.1.js"></script>
    <script>
        function go(){
            $.ajax({
                url:"${pageContext.request.contextPath}/book/test",
                data:{"name":$("#username").val()},
                success:function (data) {
                    alert(data);
                }
            })
        }

        function load() {
            $.ajax({
                url: "${pageContext.request.contextPath}/book/test02",
                data:{},
                success:function (data) {
                    // alert(data[0].bookName);
                    var html="";
                    for (let i = 0; i < data.length; i++) {
                        html +="<tr>"+
                        "<td style=\"text-align: center\">" + data[i].bookID + "</td>"+
                        "<td style=\"text-align: center\">" + data[i].bookName + "</td>"+
                        "<td style=\"text-align: center\">" + data[i].bookCounts + "</td>"+
                        "<td style=\"text-align: center\">" + data[i].detail + "</td>"+
                        +"</tr>";
                    }
                    $("#content").html(html);
                }
            })
        }

        function a1() {
            $.ajax({
                url:"${pageContext.request.contextPath}/book/test03",
                data: {"bookID":$("#bookID").val()},
                success : function (data) {
                    if(data.toString()==="书籍编号正确!"){
                        $("#IDSpan").css("color","green");
                    }else{
                        $("#IDSpan").css("color","red");
                    }
                    $("#IDSpan").html(data.toString());
                }
            })
        }

        function a2() {
            $.ajax({
                url:"${pageContext.request.contextPath}/book/test03",
                data: {"bookName":$("#bookName").val(),"bookID":$("#bookID").val()},
                success : function (data) {
                    if(data.toString()==="书籍名称正确!"){
                        $("#NameSpan").css("color","green");
                    }else{
                        $("#NameSpan").css("color","red");
                    }
                    $("#NameSpan").html(data);
                }
            })
        }
    </script>

然后在控制层编写相应请求处理语句,调用业务层即可:

    @RequestMapping("/test")
    @ResponseBody()
    public void test01(String name, HttpServletResponse rs) throws IOException {
        rs.setHeader("Content-type", "text/html;charset=UTF-8");
        String data = "";
        OutputStream ps = rs.getOutputStream();
        //这句话的意思,使得放入流的数据是utf8格式

        if(name.equals("wang")){
            data="这个人是王";
            ps.write(data.getBytes("UTF-8"));
        }else{
            data="鬼知道这是谁啊";
            ps.write(data.getBytes("UTF-8"));
        }
        ps.close();
    }

    @RequestMapping("/test02")
    @ResponseBody()
    public List<Books> test02() throws IOException {
        List<Books> books = bookService.queryAllBook();
        return books;
    }

    @RequestMapping("/test03")
    @ResponseBody()
    public String test03(int bookID,String bookName){
        String msg="";
        int result = 1;
        if(bookID!=0){
            if(bookService.queryBookById(bookID)!=null){
                msg="书籍编号正确!";
            }else {
                msg="书籍编号不存在!";
            }
        }
        if(bookName!=null){
            if(bookName.equals(bookService.queryNameById(bookID))){
                msg="书籍名称正确!";
            }else {
                msg="书籍名称错误!";
            }
        }
        return msg;
    }
  • 注意屏蔽视图解析器的注解使用
  • 注意因为前后台数据进行传输,确保本地的jackson的依赖要导入,否则数据无法通过对象–json—js对象的转换

如何解决前后台json数据传输乱码问题

通过加载注解驱动进行配置:

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="utf-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

本地所用的jackson依赖:

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.0</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值