【发布时间】:2014-04-06 20:15:13
【问题描述】:
我试图在我的烧瓶应用程序中使用 jquery .load 来添加一个 div,每次用户按下按钮添加一个新的 div,但它找不到 html 文件。
有问题的函数。
$(document).ready(function(){
$("#add").click(function(){
$("#form").load('/templates/info.html');
})
});
info.html 文件仅包含 html 的一小段 div。
index.html 代码,我想在表单之后加载 info.html div。
<form id="form" action="{{ url_for('get_data') }}" method="post">
<input type="button" name="add" value="Add" id="add">
<input type="submit" id="submit" value="To XML">
</form>
/templates/info.html
<div id="info">
<label>name</label>
<input type="text" name="name">
<br>
<label>asfd</label>
<input type="text" name="asfd">
<br>
</div>
我不断收到这个 404 错误。
127.0.0.1 - - [04/Mar/2014 19:55:50] "GET /templates/info.html HTTP/1.1" 404 -
我在本地运行烧瓶应用程序,/template/info.html 是正确的路径。我只是不知道为什么它没有加载到那个 html 中。当我使用 jquery 函数和 .append() 并将长 html 字符串放入 append 函数时,我能够使其工作,但添加 info.html 变得更长我只想能够加载整个文件。
任何帮助将非常感谢。
【问题讨论】:
-
templates只是一个文件夹。除非您明确要求,否则 Flask 不会提供内容。设置一个路由(@route('/info')或类似的东西),渲染模板,然后请求/info而不是那个 URL。 -
但是jquery不会在模板文件夹中查找,并加载html文件吗?
-
文件夹用于文件系统。 jQuery 向网络服务器发送一个 GET 请求,并在
/templates/info.html处请求资源。从那里开始,完全由 Flask 来确定/templates/info.html的实际含义。它可以将 URL 作为响应反向发回。 Flask 不像/static/那样提供/templates/的内容,这对你来说可能是一个更好的选择(尽管我建议改为创建一个实际呈现模板的路由,如下面的答案, 并使用 jQuery 加载它)。 -
我编辑了我的问题,我想我明白你在说什么,但我不知道这是否是我想要做的。
-
然后把它放到
/static/而不是/templates/。