python - 为什么只有使用 jQuery 创建的列表中的第一项通过 Ajax 发送
问题描述
我有一个使用 jQuery 创建的列表,如下所示:
pros=[];
cons=[];
$.each($(".pro-item"), function(){
pros.push($(this).html())
})
$.each($(".con-item"), function(){
cons.push($(this).html())
})
现在我想将它传递给服务器进行处理,所以我使用 Ajax:
$.ajax({
data: {
pros: pros,
cons: cons,
},
type: 'POST',
dataType: "json",
traditional: true,
url: '/pro_con_list',
success: function(data){
console.log("Ajax call successful")
}
})
但是当 server(flask/python) 收到它并且我打印结果数据时:
pros = request.form.get("pros")
print(pros)
print(request.form.get("cons"))
它只打印发送的 JS 列表的第一项。我 console.log 列出了优点和缺点列表,它显示了完整的列表:
(3) ["foo", "foo bar", "foo bar buz"]
(3) ["buz", "buz bar", "buz bar foo"]
这就是 python 打印它收到的内容:
foo
buz
我假设我没有正确发送列表,但似乎是唯一的工作方式而不是打印无。
解决方案
尝试request.form.getlist("pros")
要从文档中梳理出这一点,请从https://flask.palletsprojects.com/en/1.1.x/api/#flask.Request.form开始并深入ImmutableMultiDict
到MultiDict
,这是大多数form
响应方法的地方记录在案。
推荐阅读
- mysql - 加入三个不显示所有记录的表
- reactjs - React-bootstrap-typeeahead filterBy warning
- google-apps-script - 谷歌表格:可安装的触发器似乎禁用了简单的触发器脚本
- vue.js - Vue.js / Vuex 单击功能不适用于 cmd + 单击
- responsive - CSS。无法在响应版本中设置边距
- powershell - 试图通过powershell获取通讯组中所有活跃员工的列表作为交换
- sql - 如何显示某个月份的所有日期?
- docker - 从 docker-compose 复制调用以在 Dockerfile 中启动 nginx
- spring - 使用 Spring Integration 和 JdbcMetadataStore 时 Spring Boot 不会启动
- sublimetext3 - 如何更改 Sublime Text 3 中特定文件夹的目录图标/颜色?