web2py:json 序列化程序和 javascript 围绕 python 字符串的引号有问题
web2py: json serializer and javascript has problems with quotes around python string
我想要一个复杂的二维列表,从 python 到 javascript。 Javascript 可以很好地处理数字和列表语法(括号和逗号),但它无法理解字符串周围的引号。我试过将列表直接嵌入到代码中,然后先将其转换为 json,但都不起作用。我认为问题在于 javascript 以某种方式将 "
转换为其他内容,稍后我将说明我的意思。
但这里有一个重现问题的示例代码。
操作:
def problem():
this_works = [[1,2,5,6.99],[24,55,6.8,124]]
this_does_not = [["a",5,6,7],["b",8,9,10]]
return dict(locals())
查看:
{{extend 'layout.html'}}
{{from gluon.serializers import json}}
<p id="test_1">unchanged</p>
<p id="test_2">unchanged</p>
<p id="test_3">unchanged</p>
<script>
var x;
x = {{=this_works}};
document.getElementById("test_1").innerHTML = x;
var y;
//y = {{=this_does_not}};
document.getElementById("test_2").innerHTML = y;
var z;
//z = {{=json(this_does_not)}};
document.getElementById("test_3").innerHTML = z;
</script>
如果取消注释这两行中的任何一行,代码就会中断。如果你查看 html 的源代码,你可以看到 web2py 将 "
更改为其他内容:
<script>
var x;
x = [[1, 2, 5, 6.99], [24, 55, 6.8, 124]];
document.getElementById("test_1").innerHTML = x;
var y;
//y = [['a', 5, 6, 7], ['b', 8, 9, 10]];
document.getElementById("test_2").innerHTML = y;
var z;
//z = [["a", 5, 6, 7], ["b", 8, 9, 10]];
document.getElementById("test_3").innerHTML = z;
</script>
出于安全原因,web2py 模板引擎对模板中插入的所有文本进行转义。为防止这种情况,您应该使用 XML()
助手:
y = {{=XML(this_does_not)}};
我想要一个复杂的二维列表,从 python 到 javascript。 Javascript 可以很好地处理数字和列表语法(括号和逗号),但它无法理解字符串周围的引号。我试过将列表直接嵌入到代码中,然后先将其转换为 json,但都不起作用。我认为问题在于 javascript 以某种方式将 "
转换为其他内容,稍后我将说明我的意思。
但这里有一个重现问题的示例代码。
操作:
def problem():
this_works = [[1,2,5,6.99],[24,55,6.8,124]]
this_does_not = [["a",5,6,7],["b",8,9,10]]
return dict(locals())
查看:
{{extend 'layout.html'}}
{{from gluon.serializers import json}}
<p id="test_1">unchanged</p>
<p id="test_2">unchanged</p>
<p id="test_3">unchanged</p>
<script>
var x;
x = {{=this_works}};
document.getElementById("test_1").innerHTML = x;
var y;
//y = {{=this_does_not}};
document.getElementById("test_2").innerHTML = y;
var z;
//z = {{=json(this_does_not)}};
document.getElementById("test_3").innerHTML = z;
</script>
如果取消注释这两行中的任何一行,代码就会中断。如果你查看 html 的源代码,你可以看到 web2py 将 "
更改为其他内容:
<script>
var x;
x = [[1, 2, 5, 6.99], [24, 55, 6.8, 124]];
document.getElementById("test_1").innerHTML = x;
var y;
//y = [['a', 5, 6, 7], ['b', 8, 9, 10]];
document.getElementById("test_2").innerHTML = y;
var z;
//z = [["a", 5, 6, 7], ["b", 8, 9, 10]];
document.getElementById("test_3").innerHTML = z;
</script>
出于安全原因,web2py 模板引擎对模板中插入的所有文本进行转义。为防止这种情况,您应该使用 XML()
助手:
y = {{=XML(this_does_not)}};