首页 > 解决方案 > Ajax 不显示返回的 json

问题描述

我正在尝试我的第一个 Web 应用程序,我试图使用 Ajax 调用从服务器获取和检索 json 数据,但由于某种原因,我无法在 ajax 调用后看到 json 响应。

我读了几篇关于此的帖子,但没有运气,有人可以在这里帮助我...

<form method="post">
    <input id="show" type="submit" value="submit" />
</form>
<div id="displayNewsDiv"></div>
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("#show").click(function() {
            alert("h");
            $.ajax({
                url: "News",
                type: "Post",
                data: {"results":true},
                dataType: "json",
                success: function(data) {
                    debugger
                    alert(data);
                }
            })
            /* $.post("News", {"results": true}, function(data) {
                debugger
                alert(data);
                console.log("done")
                console.log(data)
            }) */
        })
    })
</script>

新闻.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    List<String> newsList = new ArrayList<String>();

    Path path = Paths.get(request.getServletContext().getRealPath("helpTextFile.txt"));
    try {
        newsList = Files.readAllLines(path);
        PrintWriter writer = response.getWriter();
        //writer.println(writer);
        String json = new Gson().toJson(newsList);
        response.setContentType("application/json");
        //new Gson().toJson(newsList, writer);
        writer.write(json);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

档案资料:

new_12314124124:2018.06.09:2:News 1
new_12314124124:2018.03.03:1:News 2
new_12314124124:2018.04.07:3:News 3

我在调试模式下运行,我可以看到列表中填充的数据,它转换为 json 没有错误,但我仍然无法看到数据,也无法在 ajax 中运行我的调试器。

标签: javajqueryjsonajaxservlets

解决方案


您应该为 JSON 响应设置 contentType。

response.setContentType("application/json");

写入 json 数据后,在 printWriter 对象上调用 flush() 方法。

writer.flush();

推荐阅读