请求Dispatcher导致$ .get的jQuery提醒页面文本

Yaj*_*aje 9 java ajax jquery servlets get

例如 :

我有一个像:

$.get('Test_Controller.html',function(response){ 
   alert(response);
});
Run Code Online (Sandbox Code Playgroud)

在我的Test_Controller.htmlservlet中我有:

    request.setAttribute("test","testData");
    RequestDispatcher requestDispatcher =
    request.getRequestDispatcher("/test.jsp");
    requestDispatcher.forward(request,response);
Run Code Online (Sandbox Code Playgroud)

问题是:

为什么response总会提醒我的文本内容,test.jsp而不是JSON我通过的内容getWriter()

编辑:

我需要得到:

  TestData testData = new TestData();
     request.setAttribute("test",testData);
Run Code Online (Sandbox Code Playgroud)

使用jQuery的$ .get()所以页面不会重新加载,但不幸的是,当我没有发送我的响应对象似乎是null,当我发送和转发时,当我提醒响应时它会提醒文本页.

gee*_*rt3 6

您希望将servlet中的一些信息写回客户端.你的serlvet看起来像这样:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    response.setContentType("application/json");
    Writer w = response.getWriter();
    w.append("... your json here ....");
}
Run Code Online (Sandbox Code Playgroud)

这就是全部(显然将servlet连接到您的URL web.xml).你$.get()应该看到你写给作家的任何东西.

请注意,发送的内容(在Java中)和收到的内容(在Javascript中)都是TEXT字符串.您有责任将数据转换为Java端的可读JSON,并在Javascript端将文本解释为JSON.后者可以这样做:

$.get(....., function(data) {
    try {
        // convert the text to JSON
        data = jQuery.parseJSON(data);
    } catch (e) {
        alert("Problem reading data: "+e);
    }
    ... use the JSON data ...
}
Run Code Online (Sandbox Code Playgroud)