【问题标题】:Why only first item from list created with jQuery is sent through Ajax [duplicate]为什么只有使用jQuery创建的列表中的第一项通过Ajax发送[重复]
【发布时间】:2021-03-08 19:46:03
【问题描述】:

我有一个使用 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")
        }
})

但是当服务器(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

我认为我没有正确发送列表,但似乎是唯一的工作方式而不是打印无。

【问题讨论】:

    标签: python jquery ajax flask


    【解决方案1】:

    试试request.form.getlist("pros")

    要从文档中梳理出这一点,请从 https://flask.palletsprojects.com/en/1.1.x/api/#flask.Request.form 开始,向下钻取 ImmutableMultiDictMultiDict,这是 form 响应的大多数方法的文档记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2020-07-21
      • 2019-01-25
      • 1970-01-01
      • 2010-10-15
      • 2018-10-09
      相关资源
      最近更新 更多