据我了解并使用它,AJAX用于从客户端向服务器发出请求,然后使用新内容更新客户端上的HTML DIV。
但是,我想从客户端到servlet使用AJAX来验证URL的存在。如果结果不好,我可以在servlet中设置一条错误消息并将其返回到客户端页面进行显示。
但有没有人知道,如果是肯定的结果,我可以让我的servlet自动向用户显示另一个(下一个)页面?或者,当收到肯定结果时,客户端上的Javascript是否应该触发该请求。
由于
摩根先生。答案 0 :(得分:1)
由于您的ajax调用是在后台执行中由servlet返回的结果执行的,因此返回到ajax调用,该调用应该相应地对结果起作用。例如触发另一页的显示。 (这可能已经在ajax响应中,然后你可以在div或iframe中显示它......)
答案 1 :(得分:1)
根据W3 specification,当服务器返回完整的301/302重定向并满足新请求的Same Origin Policy时,XMLHttpRequest
会强制将Web浏览器转到新位置。然而,在某些浏览器(如某些Google Chrome版本)中,这会失败
为了获得最佳的crossbrowser结果,当重定向的URL不符合 Same Origin Policy 规则时,您希望改变JavaScript端的位置。您最终可以让您的servlet发送状态和所需的新URL。 E.g。
Map<String, Object> map = new HashMap<String, Object>();
map.put("redirect", true);
map.put("location", "http://stackoverflow.com");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
resposne.getWriter().write(new Gson().toJson(map));
(Gson
顺便说一句Google Gson,它简化了将Java对象转换为JSON的方式)
然后在JS中的Ajax成功回调处理程序:
if (response.redirect) {
window.location = response.location;
}
答案 2 :(得分:0)
在您成功回拨(在客户端),将self.location.href
设置为新网址。
答案 3 :(得分:0)
HTML是一种“拉动”技术:浏览器先前未从服务器请求的浏览器中显示任何内容。
因此,您没有机会“让servlet自动显示不同的页面”。您必须与您的浏览器(从JavaScript)谈谈请求不同的页面。