【问题标题】:[Flask][Ajax] How to send and get multiple checkbox values[Flask][Ajax] 如何发送和获取多个复选框值
【发布时间】:2021-05-05 02:07:54
【问题描述】:

我正在尝试使用 AJAX 提交多个复选框值,然后将选中的项目添加到 div 元素。因为许多复选框因情况而异,所以我不知道发送和获取这样多个数据的方法。在下面的 HTML 代码中,person_name 列表的长度会根据用户而变化。

HTML:

 {% for name in person_names %}
      <label><input type="checkbox" name="check" value="{{name}}">{{name}}</label>
 {% endfor %}
 <a href=# id="add">Add</a>                                        

 <div id="names">
      Your checked names are: 
      {% for ckname in cknames%}
      <p>{{ckname}}</p>
      {%endfor%}
 </div>

Javascript:

$('a#add').bind('click',function(){
$.ajax({
    url: "/regist",
    type: "GET",
    contentType: 'application/json;charset=UTF-8',
    data: { /* I can't find a way */},
    dataType:"json",
    success: function (data) {
    var div = document.createElement('div');
    document.getElementById('names').appendChild(div);
    } 
});
})

Python:

@app.route("/")
def index():
     return render_template('index.html')

@app.route("/regist")
def register():
    cknames = request.form.getlist('check')
    return cknames %??

另外我不想重定向页面,只想添加 div 元素。感谢任何帮助!

【问题讨论】:

  • 只用数组捕获所有循环复选框,以便您轻松处理它。
  • 感谢快速评论@MuthulakshmiM。我不熟悉烧瓶和javascript。你能告诉我更多细节吗?
  • 将值推送到数组中,同时不要忘记发送 csrf 令牌。

标签: javascript python ajax flask


【解决方案1】:

您可以使用$('[name=check]').serialize()获取数据,但您的请求是错误的。
form.getlist 接收的数据需要通过 POST 并以表单数据格式发送。

$('a#add').bind('click',function(){    
    $.ajax({
        url: "/regist",
        type: "POST",
        data: $('[name=check]').serialize(),
        dataType:"json",
        success: function (data) {
            var div = document.createElement('div');
            document.getElementById('names').appendChild(div);
        },
        error: function(){
            console.log(arguments);
        }
    });    
})

【讨论】:

  • 感谢您的好主意,@Musa。但是,我仍然卡住了......我首先重写了ck=request.get_json()cknames=ck['check'],但没有出现任何回复。我的错误是什么??
  • request.form.getlist('check') 不起作用吗?
  • 我的天啊,我误解了你的评论...request.form.getlist('check') 效果很好,我想要的已经得到了。非常感谢@Musa!
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 2019-08-15
相关资源
最近更新 更多