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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章