首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >tornado:在呈现的页面中将字符串数据传递给javascript代码

tornado:在呈现的页面中将字符串数据传递给javascript代码
EN

Stack Overflow用户
提问于 2018-06-26 07:06:18
回答 1查看 747关注 0票数 2

我想将字典数据从Python传递到index.html中。(我在这里使用tornado,但对其他允许它的小框架是开放的。)

我首先用json.dumps序列化数据,然后这样

代码语言:javascript
复制
def start_server():
    data = {"a": 1, "b": 3}
    string_data = json.dumps(data)

    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            path = os.path.join(os.path.dirname(__file__), "web")
            self.render(os.path.join(path, 'index.html'), data=string_data)
            return

    app = tornado.web.Application([(r"/", IndexHandler)])
    app.listen(8000)
    tornado.ioloop.IOLoop.current().start()
    return

代码语言:javascript
复制
<script>
  console.log("{{data}}");
  obj = JSON.parse("{{data}}");
  console.log(obj);
</script>

index.html中给了我

代码语言:javascript
复制
{&quot;a&quot;: 1, &quot;b&quot;: 3}

不用说,使用这些&quot时,JSON.parse会失败。

有没有什么问题的提示?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 08:10:21

你可能应该试试{% raw data %}。但是,请注意,由于您在Javascript引用的字符串中使用了字符串,因此'data‘本身应该包含适合于此的内容:并且json.dumps()输出无效-您需要适当地对其进行转义-无论是在调用.render()的代码中还是在模板本身中(后者更可取)。也许是这样的:

代码语言:javascript
复制
obj = JSON.parse({% raw json_encode(data) %});

(使用字符串值的json_encode()将输出“转义数据”的事实)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51032863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档