在Flask app中将JSON对象视为字符串

时间:2017-09-25 22:02:47

标签: jquery python json

使用Flask应用程序(骰子游戏)在javascript中迈出第一步:我有一个函数返回一些python对象。我想在页面上呈现对象值以与javascript动画一起使用。

在python中使用json.dumps然后使用jsonify我设法传递并呈现看起来像JSON对象的东西。页面上的最终输出如下所示:

{"dice1": {"value": 5, "status": "unlocked"}}

它看起来很漂亮,引号都在正确的位置,当我在JSLint上检查它时,它似乎是合法的JSON材料。按照预期,我可以在单击按钮时从函数中获取新的对象值。

但是当我尝试使用键访问值时,它返回" undefined":

document.getElementById("card1").innerHTML = data.data.dice1

我似乎唯一能做的就是使用括号访问元素,如下所示:

document.getElementById("card1").innerHTML = data.data[0]

我不知道我搞砸了哪里。我尝试在javascript中添加JSON.parse()但它返回错误。我将mimetype更改为application / json,但它没有帮助。

我是否需要额外的步骤将此字符串(?)转换为真正的JSON?问题来自jsonify和json.dumps的组合吗?

@app.route('/')
def hello():
    python_object(object)
    data = json.dumps({"dice1":{"value":d1.value,"status":d1.status}})

    if request.is_xhr:
        return jsonify(data=data)


    if request.method == "GET":
        return render_template('main.html',data=data,status=200, 
        mimetype='application/json')

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

HTML

 $(function() {
                $('#roll-button').click(function() {
                    $.get('/', function(data){
                    document.getElementById("card1").innerHTML = 
                    data.data
                })

            });

        });

0 个答案:

没有答案