2015-06-30 35 views
-2

我的目标:包括一个html文件(我的网站的标题)到许多其他html文件(我的网站的每个页面)。jquery .load()包含一个HTML文件到另一个不工作

我不想将我的标题html复制并粘贴到我的每个网站页面中。当我想更改我的标题html时,我不想通过每个网页并更改所有标题。

我目前的(不工作的)解决方案: 使用jquery的.load()函数将我的页眉html加载到div中。我的代码:

了header.html:

<h1>I am a header</h1> 

的index.html:

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
     <script> 
      $(function(){ 
       $("#header").load("header.html"); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="header"></div> 
    </body> 
</html> 

这是非常相似,所以像this one,但我的代码,仍然不能正常工作的问题。这是否与django的模板引擎呈现这一事实有关? header.html与index.html位于同一目录中

+0

在浏览器开发工具中检查实际的请求本身。好奇你为什么不只是做一个服务器端包括?? – charlietfl

+4

为什么你想用jQuery做到这一点?这有各种各样的问题 - 负载,JS可用性,可访问性。但是,Django的模板系统被明确地*制作成通过块和继承来实现这一点。这是做到这一点的方法。 –

+0

blex:是的。丹尼尔:你能否提出另一种方法来实现我的目标而不是jQuery? googling“将html包含到另一个html文件中”主要给出我jquery的答案 – David

回答

3

我扩展了Daniel已经说过的话。

先阅读django documentation

说你有base.html您储存应该出现在所有页面的页眉部分,和你有detail.html这需要处理其他一些地区

所以,base.html

<!doctype html> 
<html lang="en"> 
    <head> 
     stuff that appears in all pages 
    </head> 
    <body> 
     {% block body %}{% endblock %} 
    </body> 
</html> 

和你detail.html会是什么样子:

{% extends 'base.html' %} 
{% block body %} 
    stuff that shows up only in detail.html 
{% endblock %} 

多数民众赞成它,你的detail.html将拥有一切base.html加上你写入body块的东西。

希望,这有助于

0

您的代码应该可以正常工作,但如果它在Chrome中,它可能会遇到文件访问问题。

您可以尝试使用Firefox,或者坚持使用Chrome浏览器,但使用参数打开它--args --allow-file-access-from-files。

如果这仍然不起作用,请在控制台输出上添加附加内容,以便更容易诊断。

相关问题