我正在使用AJAX将POST中的数据发送到Flask,但是我得到的POST数据并不是我的技能可以解析的。有人可以帮助我尝试理解如何将这些变量解析成列表吗?
在Flask中看到的数据如下所示:
items%5B%5D=104-92923-G42LH&items%5B%5D=102-10001-CRD-P07G19&items%5B%5D=104-92925-SML-CLRH&items%5B%5D=104-92923-92R-LH&items%5B%5D=104-92924-COLTRH
当我使用在线解码器对其进行解码时,我看到了:
items[]=104-92923-G42LH&items[]=102-10001-CRD-P07G19&items[]=104-92925-SML-CLRH&items[]=104-92923-92R-LH&items[]=104-92924-COLTRH
我的问题是,我不知道如何将此字符串解析为列表。我使用了不同的request
函数来查看我是否可以通过其他方式获取数据,但我仍然没有运气。目前我在我的flask函数中使用data = request.stream.read()
来查看数据。
此外,这是我的AJAX功能:
$("#myForm").submit(function(e) {
var url = "http://127.0.0.1:8080/_data";
var result = [];
$('.varSku').each(function () {
result.push($(this).data("sku"));
});
var data1 = {items: result};
$.ajax({
type: "POST",
url: url,
dataType : "string",
data: data1,
success: function(data)
{
console.log(data);
}
});
e.preventDefault();
});
我的烧瓶功能:
@app.route('/_data', methods=['GET','POST'])
def invoice():
data = request.stream.read()
print data.decode('utf8')
return "data"
非常感谢任何帮助。
答案 0 :(得分:0)
您正在寻找request.form
,它会自动将正文内容解析为字典。在您的情况下,您应该使用request.form["items"]
。
查看documentation以获取更多信息。
答案 1 :(得分:0)
问题在于,当发送包含数组或对象值的POST数据时,jQuery遵循PHP惯例,即在字段名称中添加括号。
为了超越它,我不得不使用另一个名为MultiDict.getlist()
的函数,因此我不得不改为request.form.getlist("items[]")
感谢@Martin的帮助