我可以发送带有AJAX响应的整个HTML页面吗?如果是这样,如何呈现该HTML页面以及这样做的优缺点是什么。我问这个问题的原因是我发现如果我们使用response.sendRedirect("index.html")
作为对servlet中AJAX请求的回复,我们将indx.html作为AJAX响应XML。
答案 0 :(得分:3)
您的问题没有多大意义,我无法确切地说出您的要求 - 对ajax请求的响应将是服务器发回的任何内容。它可以是纯文本,XML,HTML,HTML / XML文档的片段等。您可以使用的内容取决于您的脚本。如果您正在使用像jQuery这样的库,那么客户端会发生什么以及您可以对响应做些什么也取决于库如何解释响应(它是脚本吗?它是HTML / XML还是JSON?)。
如果我们使用response.sendRedirect(“index.html”)作为对servlet中ajax请求的回复,我们将indx.html作为ajax响应xml。有人可以解释一下这个
ajax请求的行为很像“常规”HTTP请求。因此,当您从服务器(HTTPServletResponse#sendRedirect
)发回重定向时,浏览器会跟随重定向,就像对任何其他请求一样。如果您的ajax请求是针对需要HTTP BASIC身份验证的资源,则会看到登录提示,就像您在新浏览器窗口中直接访问URL一样。
答案 1 :(得分:1)
如果你想发送HTML作为回应,因为你想更新div,表或其他元素,但仍想使用相同的css或javascript文件,那么它是有意义的。
你可以做的就是将它作为普通/文本发送回javascript函数,然后它可以将它放入你要替换的内部html元素中,但是,如果你不这样做想要替换整个页面,然后做你想做的事情毫无意义。
当您为ajax调用发出http请求时,它有自己的响应流,因此当您重定向时,您只是告诉浏览器将该http请求转到index.html,如@ no.good.at .coding提到。
答案 2 :(得分:1)
如果我收到您的问题,您只想知道您是否可以使用AJAX返回整个HTML并了解其优缺点。
您的问题的简短答案是肯定的,您可以使用AJAX响应返回整个HTML页面,因为AJAX只是对服务器的http请求。
为什么要获取整个HTML?这对我来说很困惑,这是我不清楚的部分。如果你想要渲染整个HTML(包括像html,body等标签?),你也可以将它打开为新页面,而不是通过Ajax调用它。
如果您只是想通过AJAX获取HTML片段来填充页面中的占位符,那么这是一种可接受的做法。 jQuery甚至提供了load()函数(http://api.jquery.com/load/),使您可以轻松使用该任务(请参阅加载页面片段部分)。
使用此方法,您可以使用由服务器逻辑指定的HTML片段(即登录失败或成功时)填充占位符,包括问题中的服务器重定向。