使用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
})
});
});