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

2024-04-26 04:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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上将对象数组作为dict数组接收,但返回的结果是一个空数组。在

^{pr2}$

请建议如何使用AJAX接收作为httppost请求传递的Python Flask中的对象数组作为参数?在


Tags: of对象logurlcityresponsetypeajax
1条回答
网友
1楼 · 发布于 2024-04-26 04:26:38

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

为ajax调用序列化:

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

在服务器上反序列化:

^{2}$

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

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))

相关问题 更多 >