Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ajax调用servlet_Java_Ajax_Servlets - Fatal编程技术网

Java 使用ajax调用servlet

Java 使用ajax调用servlet,java,ajax,servlets,Java,Ajax,Servlets,根据我的理解和使用,AJAX用于从客户机向服务器发出请求,然后用新内容更新客户机上的HTML DIV 但是,我想使用从客户端到servlet的AJAX来验证URL的存在。如果结果不好,我可以在servlet中设置一条错误消息,并将其返回到客户端页面进行显示 但是有人知道,如果结果是肯定的,我是否可以让我的servlet自动向用户显示另一个(下一个)页面?或者,当收到肯定的结果时,该请求应该由客户端上的Javascript触发 谢谢 Morgan先生。在您的成功回访(在客户端)中,将self.lo

根据我的理解和使用,AJAX用于从客户机向服务器发出请求,然后用新内容更新客户机上的HTML DIV

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

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

谢谢

Morgan先生。

在您的成功回访(在客户端)中,将
self.location.href
设置为新URL。

HTML是一种“拉”技术:浏览器中不会显示以前未从服务器请求的内容


因此,您没有机会“让servlet自动显示不同的页面”。您必须说服您的浏览器(从JavaScript)请求不同的页面。

由于您的ajax调用是在后台执行的,因此servlet返回的结果将返回到ajax调用,然后该调用将根据结果进行操作。e、 g.触发另一页的显示。(这可能已经出现在ajax响应中,然后您可以在div或iframe中显示它,或者…

根据,
XMLHttpRequest
在服务器返回完整的301/302重定向并满足新请求的请求时,强制webbrowser到新位置。然而,这在某些浏览器中失败,比如某些谷歌浏览器版本

为了获得最佳的交叉浏览器结果,当重定向的URL不符合相同的源策略规则时,您需要更改JavaScript端的位置。您最终可以让servlet发送状态和所需的新URL。例如

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));

谢谢它工作得很好。我通过servlet尝试了这一点,它在调用页面上显示了被调用的页面。但是self.location.href运行得很好。我们刚刚在Chrome、IE、Opera、Safari和Firefox中试用了该功能,一切都很好。但还有很多事情要做,所以我会记住这一点。我不会依赖它,你可能也依赖于浏览器版本。只需在JS中使用
window.location
进行重定向即可。
if (response.redirect) {
    window.location = response.location;
}