我是ajax的新手,我想知道我们是否可以加载一个完整的新页面而不仅仅是使用ajax加载它的一部分。请提供一个小例子脚本,以了解是否可行。在这里,当我点击页面中的任何链接时,当我从一个页面切换到另一个页面时,我只想向用户显示一个URL。
答案 0 :(得分:12)
您当然可以申请新页面并通过body.innerHTML = ajax.responseText;
我强烈建议不要这样做,原因如本帖所述:[{3}}
整个前提确实就是这样 AJAX你不需要重新加载 整页更新小 该网页的百分比。这节省了 带宽通常要快得多 而不是重新加载整个页面。
但是如果你使用AJAX来加载 这整个页面实际上就是这样 适得其反。你必须写 定制例程来处理 回调AJAX数据。它是一个整体 很多额外的工作,几乎没有 性能提升。
AJAX使用位置的一般规则:如果 您的更新> 50%的页面,只是 重新加载,否则使用AJAX。
您不仅需要请求新页面,还要确保删除当前页面上的旧样式并且不会干扰新页面。你想要做的事情有各种各样的问题。这是可能的,但我建议不要这样做。
编辑:实际上你可以做document.write(ajax.responseText)
,它应该负责覆盖文档中的所有内容,包括css样式等。虽然仍然不推荐它。< / p>
答案 1 :(得分:1)
完成处理AJAX请求后,只需使用此JS行:
window.location.replace('<URL of the new page>');
这具有通过
加载新页面的效果<a href="<URL of the new page>">...</a>.
答案 2 :(得分:0)
当您发出AJAX请求时,请求会消失,并为您提供您请求的URL的内容。从技术上讲,你可以用内容(可能是HTML)做任何你喜欢的事情,你可以用它替换DOM中的任何元素。但是要小心更换页面上的所有内容,您更可能只是想要替换标签内的内容。
答案 3 :(得分:0)
如果你想要做的是为多个页面显示一个URL,那么AJAX就是矫枉过正。为什么不直接使用IFRAME?
答案 4 :(得分:0)
如果您的页面不确定是否期望将错误插入到页面或“新”提交确认页面,这可能很有用。当您想要在提交servlet(或其他)之前放置验证servlet(或其他)时,可以使用此方法。如果页面始终命中验证servlet,则隐藏实际执行数据更新的提交servlet。在验证通过的情况下,转发到提交servlet。用户永远不知道后台发生了什么。
当页面得到回复时,您可以查看响应文本的第一部分,并确定它是否有服务器设置的关键字,这意味着这是一个新页面。从文本中删除关键字,并执行document.write(ajax.responseText);如前所述。否则,将响应文本插入到errorBox div中,然后让用户重试提交。