在JavaScript文件中设置变量值

时间:2010-07-03 14:21:34

标签: javascript python scripting

我的服务器上有一个Python脚本和一个JS。在python脚本中,我想将变量的值设置为我的.js文件中某个函数的输出。

这是可能的,如果是这样的话,我们会怎么做呢?

谢谢!

4 个答案:

答案 0 :(得分:4)

作为Macha提出的替代方法(Ajax查询),您还可以动态创建Javascript文件。

加载页面时,会加载javascript。在您的网页中是

形式的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脚本的模板。您可以使用replace替换变量及其值。

它可能不是最优雅的解决方案,但它应该有效,而且并不是那么难以理解。

不要忘记您的服务器应该知道如何处理python脚本:)

答案 1 :(得分:1)

这是不可能的,因为Javascript通常在客户端运行,而Python在服务器端运行。

如果是需要在客户端运行的代码,请让它向具有您需要的结果的python脚本发送AJAX请求。如果它不需要在客户端运行,我建议你用Python重写它。

答案 2 :(得分:1)

您只需从python脚本中打印javascript块...并在外部脚本中使用的那些块中设置变量。

<script language="javascript">var myvalue="data";</script>

使用simplejson你甚至可以打印数组和类似的东西。

只需确保javascript文件中的代码位于加载整个页面后调用的函数中,或者在页面末尾加载javascript文件。

答案 3 :(得分:0)

如果您正在使用webpack,在不加载任何http请求的情况下在python和javascript文件之间共享变量的一种方法是以yaml或json等可序列化格式存储变量,并使用yaml loader在前端解析它。

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' }