【问题标题】:HTML page as AJAX response?HTML页面作为AJAX响应?
【发布时间】:2011-10-31 07:32:55
【问题描述】:

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

【问题讨论】:

  • 是否要根据 ajax 请求的结果进行重定向?
  • 你能改写一下吗?你的问题不是很清楚...
  • @pimvdb 是的,我想重定向。但我不想刷新页面。实际上我正在发送带有 ajax 请求的登录信息。如果登录成功,我想将他重定向到主页,否则我想在登录页面中显示登录错误。

标签: java javascript ajax jsp servlets


【解决方案1】:

您的问题没有多大意义,我无法完全说出您在问什么 - 对 ajax 请求的响应将是服务器发回的任何内容。它可以是纯文本、XML、HTML、HTML/XML 文档的片段等。你可以做什么取决于你的脚本。如果您使用的是 jQuery 之类的库,那么客户端会发生什么以及您可以对响应执行什么操作还取决于库如何解释响应(它是脚本吗?它是 HTML/XML 还是 JSON?)。

如果我们在 servlet 中使用 response.sendRedirect("index.html") 作为对 ajax 请求的回复,我们会得到 indx.html 作为 ajax 响应 xml。有人可以解释一下吗

ajax 请求的行为很像“常规”HTTP 请求。因此,当您从服务器 (HTTPServletResponse#sendRedirect) 发回重定向时,浏览器会像处理任何其他请求一样遵循重定向。如果您的 ajax 请求是针对需要 HTTP BASIC 身份验证的资源,您会看到登录提示,就像您直接在新的浏览器窗口中访问 URL 一样。

【讨论】:

    【解决方案2】:

    如果您想发送 HTML 作为响应,因为您想更新 div、表格或其他元素,但仍想使用相同的 css 或 javascript 文件,那么它是有意义的。

    您可以做的只是将其作为纯文本/文本发送回 javascript 函数,然后它可以将其放入您要替换的内部 html 元素中,但是,如果您不这样做,请不要这样做想要替换整个页面,然后做你想做的事是没有意义的。

    当您为您的 ajax 调用发出 http 请求时,它有自己的响应流,因此当您重定向时,您只是告诉浏览器将该 http 请求转到 index.html,如 @no.good.at .coding 提到了。

    【讨论】:

      【解决方案3】:

      如果我收到您的问题,您只想知道是否可以使用 AJAX 返回整个 HTML 并了解利弊。

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        相关资源
        最近更新 更多