在Django模板中,我打印出如下数据:
P.place = '{{place.json|safe}}';
Run Code Online (Sandbox Code Playgroud)
然后在JavaScript文件中,我正在削减它:
place = JSON.parse(P.place);
Run Code Online (Sandbox Code Playgroud)
这样的数据一切都很好:
{"category": "Cars", "name": "Z"}
Run Code Online (Sandbox Code Playgroud)
因为字符串看起来像这样:
P.place = '{"category": "Cars", "name": "Z"}'
Run Code Online (Sandbox Code Playgroud)
所以,我可以使用JSON.parse方法解析它,接受字符串作为输入.
问题是我得到这样的数据:
{"category": "Cars", "name": "Wojtek's Z"}
Run Code Online (Sandbox Code Playgroud)
因为JSON解析器的输入字符串看起来像这样:
'{"category": "Cars", "name": "Wojtek'
Run Code Online (Sandbox Code Playgroud)
我无法在JSON字符串中转义单引号,因为那时JSON字符串变得无效.出于同样的原因,我无法用双重替换周围的引号,并在JSON字符串中转义双引号.
我的解决方案如下:
在HTML模板中:
P.place = {{place.json|safe}};
Run Code Online (Sandbox Code Playgroud)
然后在JavaScript中
var place = JSON.stringify(P.place);
place = JSON.parse(place);
Run Code Online (Sandbox Code Playgroud)
它有效,但它不是最佳解决方案恕我直言.
如何以更多的方式解决这个问题?
我可以想到两种可能性:
创建一个类型的脚本元素application/json
,将模板数据注入其中,然后读取其数据,例如.
<script id="place-json" type="application/json">
{{place.json|safe}}
</script>
<script type="application/javascript">
P.place = $('#place-json').text();
</script>
Run Code Online (Sandbox Code Playgroud)
或者,在注入字符串之前手动转义单引号,例如.
simplejson.dumps(yourdata).replace("'", r"\'")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16280 次 |
最近记录: |