Ajax成功也没有被调用的错误

时间:2017-11-21 07:31:45

标签: java jquery ajax spring

jquery / ajax的Noob在这里,所以请耐心等待我! :) 我一直在寻找网络,但没有一个答案符合我的需求,所以这是我的问题:

我尝试编写代码,现在我需要一个jquery函数:

  • 单击按钮后,jquery函数调用指定的控制器方法

  • Controller方法从数据库中获取对象数组

  • Controller方法将对象数组作为json发送给jsp,

  • 对象数组由相同的jquery函数处理,并在我的jsp上执行某些操作(例如追加某些div的内容)。

现在这是我的代码:

build.gradle依赖项:

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-tomcat')
    compile('org.apache.tomcat.embed:tomcat-embed-jasper')
    compile('javax.servlet:jstl')
    compile group: 'javax.servlet', name: 'jstl', version: '1.2'
    compile group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4'
    compile group: 'org.webjars', name: 'jquery', version: '2.2.4'
    compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1'
    compile group: 'org.webjars', name: 'jquery', version: '2.2.4'
    compile("org.springframework.boot:spring-boot-devtools")
    compile group: 'org.json', name: 'json', version: '20090211'
    compile group: 'com.google.code.gson', name: 'gson', version: '2.3.1'
    compile 'javax.validation:validation-api:1.1.0.Final'
    compile 'org.hibernate:hibernate-validator:5.0.1.Final'

    runtime('com.h2database:h2')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile group: 'com.h2database', name: 'h2', version: '1.3.148'
}

我的jquery脚本:

<script>

        $(document).ready(function() {
            $("#testButton4").click(function(event){
                $.ajax({
                    type : 'GET',
                    url : '${pageContext.request.contextPath}/fetchComments',
                    success : function(response) {
                        $('#result').html(response.get(1).author);
                    },
                    error: function() {
                        alert("God dammit...");
                    }
                });
            });
        });
    </script>

...
<button id="testButton4"> Button4</button>

<div id="result"> Here content should be changed by button click. </div>
...

和我的控制器代码:

@RequestMapping(value="/fetchComments", method=RequestMethod.GET,produces="application/json")
    @ResponseBody
    public List<Comment> fetchComments() {

        System.out.println("");
        System.out.println("Fetching comments from database");

        List<Comment> commentList = (List<Comment>) commentRepository.findAllByOrderByIdAsc();
        for(Comment comment : commentList){
            System.out.println(comment.getId() + ", " + comment.getContent() + ", " + comment.getAuthor()+", "+comment.getPostId());
        }

        return commentList;

    }

目前我的jquery函数(成功/错误)都没有工作(我可以在开发工具中看到json数据,但是从jquery的角度来看,没有任何事情发生)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

Response对象没有get方法,您要查找的数据可能位于Response对象的主体内。

答案 1 :(得分:0)

根据提示,Mitul Maheshwari给了我,我展示了来自控制器的东西。我有对象。所以我所要做的只是var list = JSON.stringify(response);,现在我可以用json数据调用list变量做我想做的所有事情。谢谢!