我有以下这段代码:
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调用时,出现以下错误:
第160行引用request.fail()行。
我做错了什么?
答案 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);
});
现在,这有效,我没有收到任何错误,页面被重定向到我最初想要的网址。