【发布时间】:2013-12-14 14:18:54
【问题描述】:
我有一个带有 java 和 EXT JS(3.4) 的 Web 应用程序。 对于所有 servlet,这就是我的 doGet 方法中的内容:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.sendRedirect("ErrorPage.jsp");
} catch (Throwable t) {
//do some logging
}
}
我使用 EXT JS 模拟 GET 请求:
Ext.Ajax.request({
method : 'GET',
url : 'web'//web is the servlet name
});
页面不重定向。这是firefox的tamperData插件的输出:
如果看不到图片,则表示AJAX Get请求响应状态为302:表示重定向,并且有一个ErrorPage.jsp请求返回状态码200:表示请求成功完成。
如果我在 ajax 请求的回调中提醒响应,它会提醒 ErrorPage.jsp 的内容。我有大量这样的 AJAX 请求。是否有任何原因导致重定向不起作用。
我还添加了以下代码。但我总是得到状态为 200。虽然我可以在 firebug 中看到获取请求的第一个请求给出状态 302,而错误页面的第二个请求给出了 200。
Ext.Ajax.on('requestcomplete', function(conn, response, options) {
alert('successful'+response.status)
});
Ext.Ajax.on('requestexception', function(conn, response, options) {
alert('failed'+response.status)
});
详情:
操作系统:Windows 7
服务器:Apache Tomcat 7.0.42
Servlet Api:使用 servlet-api-3.0.jar
【问题讨论】:
-
Ext.js 似乎将 302 响应状态视为错误,因此您需要在代码中对其进行处理。见sencha.com/forum/…
-
@Frank 更新问题
-
根据我的经验,这就是 AJAX 请求的工作方式。在here(使用jQuery)之前,我已经发布了解决该问题的一种方法的答案,您应该能够对其进行调整以满足您的需求。从 Frank 的链接看来,Ext JS 中可能还有其他解决方法。
-
@AnthonyGrist 看起来很有希望,如果可行,会尝试这个并发布解决方案
-
你真的需要重定向吗?你不能在面板中嵌入“ErrorPage.jsp”吗?我认为 Ext 有一些 IFrame UX。
标签: javascript ajax servlets extjs extjs3