如何使用JS加载另一个HTML文件

10

我正在尝试创建一个网站,想知道如何加载页面。

例如:

您单击导航器上的“主页”,然后屏幕底部加载一个页面,其中显示文本,例如“Hello Word!”

有人知道该怎么做吗?我相信这涉及JavaScript。


http://www.w3.org/wiki/HTML_links_-_lets_build_a_web#What_are_links.3F - Quentin
对于我的理解并不是很有帮助,抱歉。 - Shaun
你是在谈论单页应用程序吗?你总是停留在同一页上,但内容会重新加载。 - Deblaton Jean-Philippe
就像这个网站habbosecrets.com一样。当你点击“新闻”时,它会加载文本和图片。 - Shaun
2
我认为这是一个有用的问题和答案 - 在类似主题的许多答案中,直接跳入框架。 - JonnyRaa
3个回答

21

为了动态加载内容,你可以使用 XMLHttpRequest() 来进行 AJAX 调用。

在这个例子中,一个 url 被传递给 loadPage() 函数,加载完成后返回内容。

<!DOCTYPE html>
<html lang="en">
    <head>
        <script type="text/javascript">
            function loadPage(href)
            {
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.open("GET", href, false);
                xmlhttp.send();
                return xmlhttp.responseText;
            }
        </script>
    </head>

    <body>
        <div onClick="document.getElementById('bottom').innerHTML = 
                      loadPage('hello-world.html');">Home</div>

        <div id="bottom"></div>
    </body>

</html>

当包含文本“Home”的div元素被点击时,它将id为“bottom”的div元素的html设置为在相同相对位置找到的“hello-world.html”文档中的内容。

hello-world.html

<p>hello, world</p>

可以加载多个文档,通过反复调用此实现来替换或追加内容。 - Jason Sturges
@JasonSturges 为什么它能工作呢?我的意思是,xmlhttp 是异步的,所以当你返回 xmlhttp.responseText 时,它应该是空的,因为它应该在文件下载之前运行,至少大部分时间都是这样。但它确实可以工作,为什么呢? - Muhammad Umer
2
@MuhammadUmer 上面展示了一个同步请求。 - Jason Sturges
2
我刚才意识到,最后一个参数 false 定义了请求是否是异步的。 :D - Muhammad Umer
1
语法:open(method,url,async) - Jason Sturges
显示剩余2条评论

0

-1

加载HTML时不一定需要使用Ajax调用。只有在需要服务器在成功处理数据后才能加载页面时,才需要使用它们。

如果您没有这方面的顾虑,只是想加载HTML而无需进行数据处理,则简单的锚点标签就足够了:

 <a href="path/to/hello.html">click</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接