簡體   English   中英

如何將 JavaScript 變量傳遞給 Jinja 標簽中的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM