【问题标题】:load a new page using ajax使用 ajax 加载新页面
【发布时间】:2009-12-04 14:55:49
【问题描述】:

我是 ajax 新手,我想知道我们是否可以加载一个完整的新页面,而不仅仅是使用 ajax 的一部分。请给出一个小示例脚本以了解这是否可能。在这里,我试图只向用户显示一个 url,而当他点击页面中的任何链接时,我从一个页面切换到另一个页面。

【问题讨论】:

  • 如果我们知道想要它的原因,这种请求通常更容易回答。该信息可能会揭示替代方法,或者可能会表明您想要的东西是不可能的。至少,您可能会收到一些回复,说明为什么这是一个坏主意,这可能会为您省去很多麻烦。

标签: ajax load


【解决方案1】:

你当然可以请求一个新页面并通过body.innerHTML = ajax.responseText;加载它

我强烈建议不要这样做,原因在这篇文章中列出:Why not just using ajax for Page Requests to load the page content?

整个前提确实是 AJAX 你不需要重新加载 整页更新小 该网页的百分比。这节省了 带宽,通常更快 而不是重新加载整个页面。

但是如果你使用 AJAX 来加载 整页这实际上是 适得其反。你必须写 定制的例程来处理 AJAX 数据的回调。它是一个整体 很多额外的工作几乎没有 性能提升。

使用 AJAX 的一般规则:如果 您更新页面的> 50%,只是 重新加载,否则使用 AJAX。

您不仅需要请求新页面,而且还要注意确保当前页面上的旧样式被删除并且不会干扰新页面。 Theres 各种与您尝试做的事情相关的问题。有可能,但我建议不要这样做。

编辑:实际上你也许可以只做document.write(ajax.responseText),它应该负责覆盖文档中的所有内容,包括css样式等。虽然仍然不推荐它。

【讨论】:

    【解决方案2】:

    处理完 AJAX 请求后,只需使用以下 JS 行:

    window.location.replace('<URL of the new page>');
    

    这正是通过

    加载新页面的效果
    <a href="<URL of the new page>">...</a>.
    

    【讨论】:

    • 处理完 AJAX 请求后,只需使用以下 JS 行:window.location.replace('URL of the new page');这正是使用 href="URL of the new page".../a 加载新页面的效果。
    【解决方案3】:

    当您发出 AJAX 请求时,会发出一个请求并为您提供您所请求的 URL 的内容。现在从技术上讲,您可以对内容(可能是 HTML)做任何您喜欢的事情,您可以用它替换 DOM 中的任何元素。但是要小心替换页面上的所有内容,您更有可能只想替换标签中的内容。

    【讨论】:

      【解决方案4】:

      如果您想要为多个页面显示一个 URL,那么 AJAX 就太过分了。为什么不只使用 IFRAME?

      【讨论】:

        【解决方案5】:

        如果您的页面不确定是否希望将返回错误插入页面或“新”提交确认页面,这可能会很有用。当您想在提交 servlet(或其他)前面放置一个验证 servlet(或其他)时,可以使用它。如果页面总是命中验证 servlet,则隐藏实际执行数据更新的提交 servlet。在验证通过的情况下,转发到提交 servlet。用户永远不知道后台发生了什么。

        当页面收到响应时,您只需查看响应文本的第一部分并确定它是否具有服务器设置的关键字,这意味着这是一个新页面。从文本中删除关键字,然后执行 document.write(ajax.responseText);如前所述。否则将响应文本插入您的 errorBox div 并让用户重试提交。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-11
          • 2016-12-20
          相关资源
          最近更新 更多