Skip to main content
 首页 » 编程设计

javascript之如何在javascript中使用tal变量

2024年08月27日41zhenyulu

我想将作为对 zope 模板的响应返回的变量传递到 Pyramid 中的 javascript 变量中。

这是 View 代码:

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属性,或在 <meta>里面<head> .

<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 变量。不过这很方便,如果你需要传递多个变量——你可以使用 json.dumps()针对 Python 字典生成包含所有变量的 JavaScript 对象。