Servlet的AJAX发布错误

时间:2014-01-16 22:05:07

标签: javascript ajax jquery

我有以下这段代码:

var request;

if (request) {
    request.abort();
}

request = $.ajax({
        cache: false,
        type: 'POST',
        url: 'http://MyServlet:8080/ABC/ResponseServlet',
        data: {'data' : JSON.stringify(jsonData)}
    });

request.done(function (response, textStatus, jqXHR){
    //location.reload();
    console.log("Success! ", response);
}); 

request.fail(function (jqXHR, textStatus, errorThrown){
    console.error(
        'The following error occured: '+
        textStatus, errorThrown
    );
});

在我的servlet上,我有以下代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setHeader("Access-Control-Allow-Origin", request.getHeader("null"));
    response.setContentType("application/json");
    createView(request, response);
    System.out.println("Redirecting...");
    response.sendRedirect("http://anotherURL/index.html");

}

但是,当我执行AJAX调用时,出现以下错误: enter image description here

第160行引用request.fail()行。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,我解决了这个问题。

虽然我无法弄清楚错误的下划线原因,正如Quentin建议的那样,它可能与某些违反相同原始策略有关,即使没有引发明确的错误(即使在Firefox w / Firebug上)。 / p>

这就是我解决问题的方法:

<强>之前:

早些时候,在servlet上,在处理完请求之后,servlet的响应是重定向到另一个页面。

response.sendRedirect("http://myURLThatIWantedToRedirect");

<强>后:

我没有重定向到另一个页面,而是简单地发送了一个回复,其中包含我想转发的链接的网址。

PrintWriter out = response.getWriter();
    out.write("http://myURLThatIWantedToRedirect");

在网络应用程序中,我只是将“AJAX success”方法修改为以下内容(进行重定向):

    request.done(function (response, textStatus, jqXHR){
    console.log("Success! ", response);
    window.location.replace(response);
}); 

现在,这有效,我没有收到任何错误,页面被重定向到我最初想要的网址。