我试图将用逗号分隔的python字符串数据转换为javascript数组变量,但该过程似乎无法正常工作。
这些是我目前的代码:
var tagstring = {{ tag_data }};
var availableTags = new Array();
var availableTags = tagstring.split(",");
我需要数组看起来像这样:
var availableTags = ["Google App Engine","jQuery"];
有什么想法吗?
编辑:
这是工作代码,感谢stackoverflow社区:)
var tagstring = "{{ tag_data }}";
var availableTags = new Array();
var availableTags = tagstring.split(",");
基本上,即使python变量是一个字符串,它仍然需要在javascript中指定为字符串变量
答案 0 :(得分:3)
假设这是在Django模板中,那么这应该有效:
var tagstring = "{{ tag_data|escapejs }}";
我在"
周围添加了引号(tag_data
),因为否则只会将字符串中的文字文本插入到Javascript中;你想构造一个包含这个值的Javascript字符串。
我还使用escapejs
标记来避免嵌入反斜杠等问题。
答案 1 :(得分:1)
什么是
var tagstring = "{{ tag_data }}";
var availableTags = tagstring.split(",");
产生
顺便说一句,这可以进一步折叠成单行。
var availableTags = "{{ tag_data }}".split(",");
答案 2 :(得分:1)
正确的解决方案是不使用任何字符串函数 - 无论是在python还是javascript中 - 而是使用JSON编码器:
var availableTags = {{ json.dumps(elem.strip() for elem in tag_data.split(',')) }}
当然,如果你在python中有一个列表而不是字符串会更好......