[英]How to pass JavaScript variable to function in Jinja tag
<script>
function myFunction() {
var name = "some_string";
var display = "{{ python_function(name) }}";
alert(display);
}
</script>
上面的 Javascript 是用 jinja2 模板編寫的。 它應該將javascript變量(即var名稱)值傳遞給宏中的python函數。 我知道上面的代碼不能解決我的目的,因為我沒有將 javascript 變量值正確地傳遞給宏。 有人有將javascript變量傳遞給jinja2模板中的宏的方法嗎?
您不能以這種方式將值從 javascript 傳遞到模板,因為模板將在響應返回到瀏覽器以供 javascript 引擎評估之前呈現。 模板渲染器能夠解析 JavaScript 代碼中指定的name
值的唯一方法是解釋嵌入在<script></script>
的字符串。
更新。 讓我們看看你的第二次嘗試,你說的那一次成功了。 你有:
<body>
<button onclick="js_fn('{{ py_fn('some_string') }}')">Click me</button>
<script>
function js_fn(variable) {
alert(variable);
}
</script>
</body>
大概這是在某些部分(比如_index.html )。 在范圍內具有py_fn
的視圖加載_index.html ,評估字符串“py_fn('some_string')”,並用該評估的結果替換{{ py_fn('some_string') }}
。 假設py_fn
是字符串的恆等函數:它是一個接受字符串並立即返回它的一元函數。 然后,評估 "py_fn('some_string')" 的結果將是字符串'some_string'
,它將被替換回來,獲得最終的,所謂的“渲染”模板:
<body>
<button onclick="js_fn('some_string')">Click me</button>
<script>
function js_fn(variable) {
alert(variable);
}
</script>
</body>
這個字符串將是請求的響應體的一部分,所以瀏覽器會轉儲窗口上的按鈕,評估腳本塊內的 js 代碼,這將在window
上創建一個全局變量js_fn
,它將采取一些東西和警報它。 單擊按鈕時,將js_fn
使用常量some_string
調用js_fn
。 如您所見,沒有將值從 JS 傳遞到 Python/Flask。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.