我正在尝试将结构化数据从网页传递到烧瓶处理程序,但出现关键错误。
在网页的JavaScript中,我有一个对象,该对象包含两个元素,一个是值,另一个是对象。
问题出在Flask / Python方面。我可以这样获得第一个元素("cid"
)
print request.form ["cid"]
那行得通。但是,我无法访问或访问任何att(ribute)值("att"
)。
因此,request.form ["att"]
返回KeyError: 'att'
我可以访问request.form["att[sw1]"]
,但是这使我的数据类型扁平化。
我想以列表或字典的形式获取att元素,以便在应用程序中循环访问它们。我本质上想要request.form["att"]["sw1"]
或request.form.att["sw1"]
。
var controllerData = {
sw1 : $('#sw1').val(),
sw2 : $('#sw2').val(),
sw3 : $('#sw3').val(),
sw4 : $('#sw4').val()}
var updateData = {cid : 1, att: controllerData };
$.ajax({
type: "POST",
url: "/SetSettings",
data: updateData,
success: function(d) { },
error: function(d) {alert('Error saving settings!');},
dataType: "json"
});
答案 0 :(得分:0)
您必须将数据对象序列化为带有JSON.stringify()的字符串。
$.ajax({
type: "POST",
url: "/SetSettings",
data: JSON.stringify(updateData),
success: function(d) { },
error: function(d) {alert('Error saving settings!');},
dataType: "json"
});
PS:某些物体,例如window
或包含循环依赖项的对象无法以这种方式序列化