使用ajax将数组发布到烧瓶

时间:2019-07-10 23:59:21

标签: jquery ajax flask

在烧瓶上接收阵列数据时,您能帮我解决一个问题吗?

烧瓶路线

@app.route("/grab_checkboxes", methods = ["GET", "POST"])
def grab_checkboxes():
    print("Grabbing 1 or more checkboxes that are true!")
    data = request.get_json()
    print(data)
    return "1"

jquery和ajax代码

{% extends "layout.html" %}
{% block content%}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
  $("document").ready(function() {
  var checked_codes = [];
  $("#checked_codes_button").mouseenter(function(){
    $.each($("input[type='checkbox'][name='record_code']:checked"), function(){ 
                checked_codes.push($(this).val());
            });
            console.log(checked_codes)
    });
  $("#checked_codes_button").click(function() {
      $.ajax({
        url: '/grab_checkboxes',
        data: JSON.stringify(checked_codes),
        type: 'POST',
        success: function(response) {
          console.log(response);
          console.log(checked_codes);
        }
      });
  });
});
</script>
  <table>
    {% for k1, v1 in list_to_print.items() %}
      {% for k2, v2 in code2descr.items() %}
        {% if k1 == k2 %}
          <tr>
              <td><input type="checkbox" checked name="record_code" value="{{k1}}" ></td>
              <td> {{ v1 }} </td>
              <th> {{ k1 }} </th>
              <td> {{ v2[0] }} </td>
              <td> {{ v2[2] }} </td>
              <td> {{ v2[1] }} </td>
          </tr>
        {% endif %}
      {% endfor %}
    {% endfor %}
  </table>
  <form action="/grab_checkboxes" method="post" id="checked_codes_button">
  <button type="submit">submit</button>
  </form>
{% endblock content %}

单击按钮后,我可以看到控制台打印了正确的值,但是在Python print(data)中,我看到没有收到任何信息。

谢谢。

1 个答案:

答案 0 :(得分:1)

由于您要发送json,因此需要在contentType中设置正确的$.ajax

尝试添加:

$.ajax({
    url: '/grab_checkboxes',
    contentType: 'application/json; charset=utf-8`,
    ....