在JavaScript文件中设置变量值
我在我的服务器上有一个Python脚本和一个JS。在python脚本中,我想将变量的值设置为我的.js文件中某个函数的输出。在JavaScript文件中设置变量值
这是可能的,如果是这样的话会怎么做呢?
谢谢!
作为Macha建议(Ajax查询)的替代方案,您也可以动态创建Javascript文件。
当页面被加载时,JavaScript被加载。在你的页面的URL的JavaScript在
<SCRIPT LANGUAGE="JAVASCRIPT" SRC="mycode.js" TYPE="TEXT/JAVASCRIPT">
诀窍形式现在让服务器不服务于静态文件“mycode.js”,但如输出mycode.py。因此,你的标签看起来像
<SCRIPT LANGUAGE="JAVASCRIPT" SRC="mycode.py" TYPE="TEXT/JAVASCRIPT">
和Python脚本看起来像可能(简体):
var_value = "whatever you want the variable to be"
jsfile = open("myscript.js", "rb")
for line in jsfile:
print line.replace("$MYVAR$", var_value)
jsfile.close()
总之,你有你当前的js文件,但你会用它作为python脚本的模板。你用你的变量替换它的值。
它可能不是最优雅的解决方案,但它应该工作,并不是很难理解。
不要忘记,你的服务器应该知道如何处理Python脚本:)
这是不可能的,因为Javascript通常运行在客户端,而Python运行在服务器端。
如果它是需要在客户端运行的代码,让它发送一个AJAX请求到一个python脚本并提供你需要的结果。如果它不需要在客户端运行,我建议你用Python重写它。
Thanks Macha!所以,我可以让脚本运行客户端,并远程调用HTML或JS调用python吗?我可以重写Python脚本来返回一个值,我可以从我的HTML页面或JS调用它,对吧? – 2010-07-03 14:31:22
它必须将值打印到页面上,而不仅仅是返回它,以便Javascript能够读取它。 – Macha 2010-07-03 14:33:52
您可以简单地从你的Python脚本打印的JavaScript块...并且在从外部脚本中使用这些块设置变量。
<script language="javascript">var myvalue="data";</script>
使用simplejson你甚至可以打印数组和类似的东西。
只要确保JavaScript文件中的代码位于整个页面加载后调用的函数中,或者在页面末尾加载JavaScript文件。
如果您使用的是webpack,在不加载任何http请求的情况下在python和javascript文件之间共享变量的一种方式是将变量以yaml或json等可序列化的格式存储,并使用yaml加载器将其解析到前端。
const.yaml
DAY_MON: MON
DAYS:
- MON
- TUE
MAP_CONTENT_TYPE_TO_EXTENSION:
image/gif: .gif
image/jpg: .jpg
const.py
import yaml
globals().update(yaml.load(open('./const.yaml')))
print DAY_MON
print DAYS
print MAP_CONTENT_TYPE_TO_EXTENSION
# MON
# ['MON', 'TUE']
# { 'image/gif': '.gif', 'image/jpg': '.jpg' }
安装装载机解析YAML npm install yaml-loader
const.js
import data from "json-loader!yaml-loader!./const.yaml";
data.ANOTHER_VARIABLE = "SOME_VAR";
export default data;
read.js
import constants from './const.js';
console.log(constants.ANOTHER_VARIABLE);
console.log(constants.LISTING_TYPE_BRAND);
console.log(constants.DAYS);
console.log(constants.MAP_CONTENT_TYPE_TO_EXTENSION);
// SOME_VAR
// MON
// ['MON', 'TUE']
// { 'image/gif': '.gif', 'image/jpg': '.jpg' }
只有一点:'language =“javascript”'多年来一直不需要。这对'type =“text/javascript”'是多余的。 – Macha 2010-07-03 15:13:26
实际上,除了'src'之外的所有属性都不再需要了。 – 2010-07-03 18:52:29
@Justin Johnson即使SRC指向一个python脚本?这意味着将分析URL的内容以检查其包含的代码类型。 – extraneon 2010-07-04 11:32:56