2011-08-20 58 views
3

我可以通过AJAX响应发送整个HTML页面吗?如果是这样,如何呈现该HTML页面,以及有什么优点和缺点。我问这个问题的原因是我发现如果我们使用response.sendRedirect("index.html")作为对servlet中的AJAX请求的回复,我们将indx.html作为AJAX响应XML。作为AJAX响应的HTML页面?

+0

你想根据ajax请求的结果重定向吗? – pimvdb

+0

你能改说吗?你的问题不是很清楚... – Nayish

+0

@pimvdb是的我想重定向。但我不希望页面被刷新。其实我正在用ajax请求发送登录信息。如果登录成功,我想将他重定向到主页,另外我想在登录页面显示登录错误。 – nath

回答

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

如果你想发送HTML作为回应,因为你想更新divs,表格或其他元素,但仍然想使用相同的CSS或JavaScript文件,那么它可以是有道理的。

你可以做的只是将它作为普通/文本发送回javascript函数,然后就可以把它放到你想要替换的内部html元素中,但是,不要这样做,如果你想要替换整个页面,然后做你想要的是毫无意义的。

当你为你的ajax调用发出http请求时,它有自己的响应流,所以当你重定向你只是告诉浏览器有这个http请求去index.html,作为@ no.good。 at.coding提到。

1

如果我得到你的问题,你只是想知道你是否可以用AJAX返回整个HTML并知道正反两面。

你的问题的简短答案是肯定的,你可以用你的AJAX响应返回整个HTML页面,因为AJAX只是一个到服务器的http请求。

为什么要获取整个HTML?这令我感到困惑,这是我不清楚的部分。如果你想要渲染整个HTML(包括html,body等标签),你可以将它作为一个新页面打开,而不是通过Ajax调用它。

如果您只是想要通过AJAX获取HTML片段以在页面中填充占位符,那么这是一种可接受的做法。 jQuery甚至提供了load()函数(http://api.jquery.com/load/),使您可以轻松使用该任务(请参阅加载页面片段)。

使用此方法,您可以使用由您的服务器逻辑指定的HTML片段(即,登录失败或成功时)填充占位符,包括通过服务器重定向的问题。