【问题标题】:What would be the best way to pass a list from python to js using bottle?使用瓶子将列表从 python 传递到 js 的最佳方法是什么?
【发布时间】:2012-07-11 07:13:14
【问题描述】:

我使用 Bottle 作为 Web 服务器,需要将 python 列表传递给 javascript。

当我只做 {{myList}} 时,Bottle 会转义列表中字符串的单引号并将它们显示为 ' 反过来,JS 对它得到的结果并不满意。

我设法找到了解决方案,但我认为这不是最佳解决方案。

var tempList = '{{eval(myList)}}'.replace(/'/g, "'");
var myNewList = eval(tempList);

我想知道,有没有更好的方法来做到这一点?

更新:我将找到的解决方案移至“答案”部分。

【问题讨论】:

  • 如果您的问题得到解决,请接受对您最有帮助的答案,或者写下您自己也能接受的答案。请不要在问题更新中发布您自己的答案。
  • 还有,python 3中的jsonsimplejson模块,前段时间已经集成到python标准库中了。

标签: javascript python string escaping bottle


【解决方案1】:

我开始使用 json(Python3 中的 json_dumps,simplejson 不会安装),但是瓶子仍然在转义单引号。我在 Bottle 手册中发现您可以使用感叹号跳过转义并更改我的代码:

var myNewList = {{!myList}};

【讨论】:

  • 刚刚发现json_dumps实际上是这样的,因为它是这样导入到Bottle的。就在 Python 3 中,它仍然是 json.dumps
【解决方案2】:

请改用json module;毕竟它会输出有效的 JavaScript 表达式。

JSON(JavaScript Object Notation)是 JavaScript 语法的子集(ECMA-262 第 3 版)[…]

快速示例:

>>> import json
>>> json.dumps([1, 2, 'foo', 'bar'])
'[1, 2, "foo", "bar"]'

将其直接放入您的模板中。我一直使用它来将有效的 JavaScript 数据结构放入我生成的网页中。

【讨论】:

  • JSON 不是有效的 JavaScript 数据结构。您应该解析 JSON 字符串以在 JavaScript 中创建列表:var yourList = JSON.parse({{yourJSONString}});
  • @iurisilvio:给我一个 不是 有效 JavaScript 的 JSON 字符串示例。我认为U+2028 or a U+2029 characters 不够,因为python json 模块使用\u 表示法逃避了那些。
【解决方案3】:

我不熟悉 Bottle,但在使用 Django 时确实遇到了同样的问题。我的解决方案是将 Python 列表转储为 JSON 格式。 Javascript 对 JSON 很满意。

myList = [1, 2, 3, '字符串', "&apm;", '"']

然后将simplejson.dumps(myList) 返回到您的网页。 在js中:

var myList =

注意:不要用引号将转储的 JSON 值括起来。

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2018-06-09
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多