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