gpt4 book ai didi

jquery - 如何使用 AJAX 接收作为 HTTP 请求传递的 Python Flask 中的参数的对象数组?

转载 作者:行者123 更新时间:2023-12-01 02:52:54 25 4
gpt4 key购买 nike

我的 ajax 调用如下所示:

  $.ajax({
url: "/doSomeCoolThingOnServer",
type: "POST",
async: false,
data: {
simple_string: "Variable sent from client side",
array_of_strings: ["John", "George"],
array_of_objects: [
{ city: "Shanghai", population: 1000 },
{ city: "Budapest", population: 2501 }
]
},
success: function(response) {
console.log("===== SUCCESS =====");
console.log(response);
},
error: function(response) {
console.log("===== ERROR =====");
console.log(response);
}
});

我试图在 Python 上以字典数组的形式接收对象数组,但返回一个空数组

@app.route("/doSomeCoolThingOnServer", methods=['POST'])
def doSomeCoolThingOnServer():
simple_string = request.form['simple_string']
array_of_strings = request.form.getlist('array_of_strings[]')
array_of_objects = request.form.getlist('array_of_objects[]')

print(simple_string) #returns desired string
print(array_of_strings) # returns desired array
print(array_of_objects) # returns empty array

请告知如何在 Python Flask 中接收作为使用 AJAX 作为 HTTP POST 请求传递的参数的对象数组?

最佳答案

您可以使用 JSON.stringify 序列化对象,然后在服务器上使用 json.loads 反序列化。这可以有效地将对象数组作为字符串数组发送。

序列化ajax调用:

array_of_objects: [
JSON.stringify({ city: "Shanghai", population: 1000 }),
JSON.stringify({ city: "Budapest", population: 2501 })
]

在服务器上反序列化:

import json
array_of_objects = request.form.getlist('array_of_objects[]')
print([json.loads(s) for s in array_of_objects])

另一种选择是序列化整个数组,而不是单独序列化每个数组元素。这将对象数组作为单个字符串发送:

array_of_objects: JSON.stringify([
{ city: "Shanghai", population: 1000 },
{ city: "Budapest", population: 2501 }
])

import json
array_of_objects = request.form['array_of_objects']
print(json.loads(array_of_objects))

关于jquery - 如何使用 AJAX 接收作为 HTTP 请求传递的 Python Flask 中的参数的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44538648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com