簡體   English   中英

如何在javascript中使用tal變量?

[英]How to use tal variable with javascript?

我想將作為對zope模板的響應返回的變量傳遞到金字塔中的javascript變量中。

這是視圖代碼:

def return_table(request):
selected = request.params.getall("selectedcategories")

return {'selected': selected}

這是模板:

<script tal define:"selected ${selected}">
    var selected = ${selected}
    $.ajax({
        type:"POST",
        url: '/return_table.json?selectedcategories=' + selected,
        async: false,
        success: function (response) {
            console.log(response)
        }
   })
</script>

但這是行不通的。 我想將selected的值傳遞給javascript變量。

最安全的方法是將變量作為HTML5 data屬性或在<head>內部的<head> <meta>傳遞。

<script id="my-script" data-selected="${selected}">
    $(document).ready(function() {

        var selected = $("#my-script").attr("data-selected");

        $.ajax({
            type:"POST",
            url: '/return_table.json?selectedcategories=' + selected,
            async: false,
            success: function (response) {
                console.log(response)
            }
       })
    });
</script>

有關數據屬性的更多信息: http : //caniuse.com/#feat=dataset

您還可以生成<script>片段,將變量公開為JavaScript全局變量,如下所示,然后直接在JavaScript代碼中讀取全局變量:

<script>
     window.myVar = "${selected}";
</script>     

<script>
     ... code goes here ...
</script>

...但是我不建議這樣做,因為包含用戶輸入的變量會使您的網站容易受到攻擊,並且很難在HTML中轉義JavaScript變量。 不過,如果需要傳遞多個變量,這很方便-您可以對Python字典使用json.dumps()來生成包含所有變量的JavaScript對象。

采用

var selected=${structure:selected};

並刪除

tal define:"selected ${selected}"

在腳本標簽中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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