SSM框架中使用ajax时返回客户端数据一直走error

记一次在用SSM框架写一个在注册时,异步的鼠标检测用户名是否存在的功能

在完成这个功能的时候,遇到了许多的BUG,最头疼的一个就是使用Ajax向后端发送数据,而后端返回数据时候,一直走的是error这个方法。

因为这个问题整整的浪费了我一整天的时间,也百度了许多关于这个问题的原因,网上需要博主都说是json数据的问,还有就是ajax中的dataType的原因,我全部都试了一遍,还是走error。

首先说一下如何排除的这个BUG:

首先在后台打印一下能否接收到前端传来的参数,然后能接收到说明已经调用了后端的方法了。

后端代码如下:

   //检查用户是否存在
    @RequestMapping("/checkUser.do")
    @ResponseBody
    public Message checkUser(String username) throws Exception {
        System.out.println("=================================="+username);
        List<UserInfo> list=userService.checkUser(username);
        if (list.size()>0){
            //用户名存在
            Message msg=new Message(true);
            msg.setMsg("用户名已经存在");
            return msg;
        }else {
            Message msg=new Message(false);
            return msg;
        }

    }

再来看一下ajax,先在success和error方法中alert()一下,看调用了哪一个,不出所料一直都时error,然后在error中通过console.log(data)查看一下。如下:

  $(function () {
            $("#username").blur(function () {
                var username = $(this).val();
                $.ajax({
                    url:"${basePath}/user/checkUser.do",
                    data:{username:username},
                    type:"POST",
                    success:function (data) {
                       $("#errorMsg").html(data.msg)
                    },
                    error:function (error) {
                        console.log(error)
                    }
                })
            })
        })

通过F12查看到有两个错误
1.No converter found for return value of type

2.ajaxValidate is not defined

我检查了下ajax没问题,说明是第一个问题的原因,然后我就从导包开始检查,去搜索了一下看是否有json相关依赖,竟然一个没有,然后就添加了如下三个依赖:

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20151123</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>

然后再重新去试了一下,终于走了success。

 

总结:

在使用什么之前,应该先进行导包。如果再出现错误,就从后端到前端一步一步进行排查,打印一下出现的错误。利用好浏览器DEBUG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值