【问题标题】:Python to Javascript JSON objects (Flask) [duplicate]Python到Javascript JSON对象(Flask)[重复]
【发布时间】:2015-06-29 19:18:26
【问题描述】:

我正在尝试创建一个简单的 Flask 应用程序,其中在服务器上生成一个整数数组并发送到客户端。我想在控制台中查看整数数组。这是 app.py 中的一些示例(工作)代码:

from flask import Flask, render_template, request, url_for

import random, json

app = Flask(__name__)

@app.route('/',  methods=['GET'])
def form():
    json_helper = {}
    json_helper['randoms'] = [random.random() for _ in range(40)]
    json_object = json.dumps(json_helper)
    return render_template('sim0625.html', s_data=json_object)

if __name__ == '__main__':
  app.run(debug=True)

这里是 Javascript 前端的 sn-p:

<script>

  var data_xyz = {{ s_data|tojson }};

  var JSONObject = JSON.parse({{data_xyz}});
  console.log(JSONObject.randoms);  

 </script>

不幸的是,我的网页上没有任何 javascript 工作,并且显示的错误消息是“Uncaught SyntaxError: Unexpected token u”。

谁能解释一下如何解决这个问题?谢谢。我的猜测是 JSON 对象正在变成字符串。

注意:前端的代码改编自这个 SO 问题:Extracting data from json object in jQuery or JS

【问题讨论】:

    标签: javascript python json flask to-json


    【解决方案1】:

    您正在通过变量 s_data 将 JSON 发送到模板。

    在模板中,您将该变量呈现为一个名为data_xyzJavaScript 变量。在下一行中,您尝试引用 Jinja 变量而不是 JavaScript 变量:

    var JSONObject = JSON.parse({{data_xyz}});
    

    将其更改为:

    var JSONObject = JSON.parse(data_xyz);
    

    【讨论】:

    • 谢谢!!一个问题:我认为我的 app.py 中的 json.dumps() 方法正在获取一个字符串并将其转换为 JSON 对象。因此,我认为客户端正在从服务器接收 JSON 对象(不是字符串)。如果客户端确实在接收 JSON 对象(而不是字符串),为什么需要这两行代码? “var data_xyz = {{ s_data|tojson }}; var JSONObject = JSON.parse({{data_xyz}});”据我了解,这两行代码将字符串转换为 JSON 对象。
    • @codersun3 json.dumps: "将 obj 序列化为 JSON 格式的 str"
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2018-01-25
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多