有没有办法将转义代码转换回它们在javascript中代表的字符? 我将列表传递给javascript文件,当我查看源代码时,而不是这个
['/path/to/job/a', '/path/to/job/b', etc]
我看到了这个
['/path/to/job/a', '/path/to/job/b', etc]
我需要实际的单引号本身进行jquery自动完成调用,那么有没有办法转换回去?我将列表传递给python / flask后端的javascript
return render_template('main_page.html', job_names = id_by_job.keys())
所以在javascript文件中,我正在做类似
的事情$("#job_names").autocomplete({source : {{job_names}}});
答案 0 :(得分:0)
插入到模板中的值总是被转义以便安全包含;其中包括用HTML实体替换引号。
您希望在此处使用tojson
filter将列表转换为JSON,并将结果标记为安全:
$("#job_names").autocomplete({source : {{ job_names|tojson_safe }}});
JSON是JavaScript的一个子集;结果可以直接读取为JavaScript,保证可以正确转义。
答案 1 :(得分:-2)
一个巧妙的技巧是使用临时选项:
var o=new Option();
o.innerHTML="'/path/to/job/a', '/path/to/job/b', etc"
alert(o.innerHTML); // shows: "'/path/to/job/a', '/path/to/job/b', etc"
你也可以使用RegExp替换函数回调:
"'/path/to/job/a', '/path/to/job/b', etc".replace(/&#(\d+);/g,
function(j,a){
return String.fromCharCode(a)
}); // == "'/path/to/job/a', '/path/to/job/b', etc"
编辑: 我意识到你可能想要处理数组,[] .map()可以很容易地将上面的数据应用到数组中:
['/path/to/job/a', '/path/to/job/b']
.map(function(a){ return a.replace(/&#(\d+);/g, function(j,a){
return String.fromCharCode(a)
});
}); // == ["/path/to/job/a", "/path/to/job/b"]