Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Python变量/Jinja2模板传递到JavaScript文件?_Javascript_Python_Html_Flask - Fatal编程技术网

如何将Python变量/Jinja2模板传递到JavaScript文件?

如何将Python变量/Jinja2模板传递到JavaScript文件?,javascript,python,html,flask,Javascript,Python,Html,Flask,我知道您可以在html中将变量传递给内联javascript,如: 如果您的js代码使用模块系统,则有更优雅的方法可以做到这一点,但如果我正确理解您的情况,则这是一种方法: <div>blah blah</blah> <script> var window.myData = window.myData = {{ data|tojson }}; </script> 这假设您的myData可以安全地跨页面上的所有js进行全局共享 还请注意,要

我知道您可以在html中将变量传递给内联javascript,如:


如果您的js代码使用模块系统,则有更优雅的方法可以做到这一点,但如果我正确理解您的情况,则这是一种方法:

<div>blah blah</blah>
<script>
    var window.myData = window.myData = {{ data|tojson }};
</script>
这假设您的myData可以安全地跨页面上的所有js进行全局共享

还请注意,要使其正常工作,必须确保在运行highcharts.js之前已填充window.myData。您不应该依赖异步偶然事件来实现这一点,而是应该确保代码始终按照正确的顺序加载,并基于js加载规则。这是使用某种风格的js模块可以解决的另一件事

关于逃逸的说明:
注意,我在这里使用了tojson而不是safe。这是谷歌搜索3分钟的结果,可能是错误的。但问题是,我不认为安全是你想要的,这似乎完全关闭了逃跑。除非您确信数据没有潜在的XSS样式攻击字符串,否则您可能希望在这里使用HTML转义,而不是默认的HTML转义。但是,我不是专家。

我认为没有办法做到这一点。您只需将数据放在js代码可以获取的地方。但在这种情况下,因为它是第三方库,所以可能取决于代码。问题是我需要传递的数据是从数据库查询的,所以我无法将其放入js代码中。我在highcharts.js中调用的函数是我自己在静态文件夹中的函数,而不是第三方库。我已经写出了一个答案,但我怀疑可能我不理解其中的一些细节,所以如果我的答案遗漏了什么,请告诉我。
    <script src="{{ url_for('static', filename='scripts/highcharts.js') }}"></script>
<div>blah blah</blah>
<script>
    var window.myData = window.myData = {{ data|tojson }};
</script>
test_func(window.myData);