使用ajax来调用servlet

时间:2010-07-13 11:35:38

标签: java ajax servlets

据我了解并使用它,AJAX用于从客户端向服务器发出请求,然后使用新内容更新客户端上的HTML DIV。

但是,我想从客户端到servlet使用AJAX来验证URL的存在。如果结果不好,我可以在servlet中设置一条错误消息并将其返回到客户端页面进行显示。

但有没有人知道,如果是肯定的结果,我可以让我的servlet自动向用户显示另一个(下一个)页面?或者,当收到肯定结果时,客户端上的Javascript是否应该触发该请求。

由于

摩根先生。

4 个答案:

答案 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)谈谈请求不同的页面。