我在我的服務器上有一個Python腳本和一個JS。在python腳本中,我想將變量的值設置爲我的.js文件中某個函數的輸出。在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