Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
web2py:json序列化程序和javascript在使用python字符串的引号时存在问题_Javascript_Json_Serialization_Web2py - Fatal编程技术网

web2py:json序列化程序和javascript在使用python字符串的引号时存在问题

web2py:json序列化程序和javascript在使用python字符串的引号时存在问题,javascript,json,serialization,web2py,Javascript,Json,Serialization,Web2py,我想要一个从python到javascript的复杂2d列表。Javascript可以很好地处理数字和列表语法括号和逗号,但它无法理解字符串周围的引号。我曾尝试将列表直接嵌入到代码中,并首先将其转换为json,但两者都不起作用。我认为问题在于javascript以某种方式转换成了其他东西,我马上就说明了我的意思 但这里有一个示例代码来重现这个问题 行动: def problem(): this_works = [[1,2,5,6.99],[24,55,6.8,124]] this

我想要一个从python到javascript的复杂2d列表。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())
视图:


出于安全原因,web2py模板引擎将转义插入模板中的所有文本。要防止出现这种情况,应使用XML帮助器:


这对string有效,但对None无效。但是我使用了XMLjson。。。现在它对这两者都有效,因为json将None转换为null。有更方便的方法吗?使用json可能是最安全的,因为这将确保您的Python对象正确地转换为json。或者,在将对象传递给XML之前,您可以只包含逻辑,以将对象替换为字符串“null”(如果对象为None)。
{{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>
<script>
    var x;
    x = [[1, 2, 5, 6.99], [24, 55, 6.8, 124]];
    document.getElementById("test_1").innerHTML = x;

    var y;
    //y = [[&#x27;a&#x27;, 5, 6, 7], [&#x27;b&#x27;, 8, 9, 10]];
    document.getElementById("test_2").innerHTML = y;

    var z;
    //z = [[&quot;a&quot;, 5, 6, 7], [&quot;b&quot;, 8, 9, 10]];
    document.getElementById("test_3").innerHTML = z;

</script>
y = {{=XML(this_does_not)}};