我跟随此example使用:
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
我已纠正:
var $SCRIPT_ROOT = '{{ request.script_root|tojson|safe }}';
所以它没有给出错误:
意外的令牌{
但是,我收到了另一个错误:
GET http://localhost/templates/%7B%7B%20request.script_root%7Ctojson%7Csafe%20%7D%7D/_prtpe?i=6 403(禁止)
出现此错误的原因和/或如何解决此问题?
编辑:这是Python代码的重要部分:
@app.route('/_prtpe')
def prtpe():
i = request.args.get('i', 0, type=int)
for position, item in enumerate(price):
if item > i:
return jsonify(result=percentage[position-1])
@app.route('/')
def index():
return render_template('study3.html')
修改2 :我将此代码从script.js
移至study.html
:
<script type="text/javascript">
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
</script>
但现在我收到了JavaScript代码的错误,因为我稍后会使用变量$SCRIPT_ROOT
。
未捕获的ReferenceError:$ SCRIPT_ROOT未定义
答案 0 :(得分:1)
根据错误中的路径,您尝试直接获取模板。相反,您需要渲染模板,因为它包含Jinja语法。您已经制作了一个可以呈现模板的视图,但您还没有使用它。转到由/
视图处理的路径index
,然后返回呈现的模板。
您获得的具体错误是因为JavaScript并不了解Jinja语法。您不需要将tojson
的结果包装在引号中。
如果从html模板中分离出带有Jinja语法的js文件,则还需要使用Jinja进行渲染。任何具有Jinja语法的东西都不是静态的,它不能直接链接。另一种方式是,您可以链接到url_for
的任何文件都需要一条路线来呈现或提供它。
答案 1 :(得分:0)
我第一次尝试教程时遇到了同样的错误。我的问题是我在浏览器中打开index.html文件而不是运行python程序(实际上是渲染模板)
尝试使用github repo中的文件(https://github.com/pallets/flask/tree/master/examples/jqueryexample) 并通过单击执行python程序(&#39; jqueryexample.py&#39;)。