【问题标题】:flask update database based on value sent from jquery基于从 jquery 发送的值的烧瓶更新数据库
【发布时间】:2019-08-28 16:02:11
【问题描述】:

我正在使用flask和jquery制作购物车页面,flask将数据发送到jquery,jquery根据数据生成一个表,每个表行都有一个输入字段,其中包含数量,当用户点击更新按钮 jquery 获取值并将其发送到flask 进行处理,但是我flask 将发送的值返回为None,我不确定是什么问题,是jquert 发布数据还是flask 获取数据。

表格

$.ajax({
    url: '%%url_for("shopping_cart.get")%%%%process_query_string(request)%%',
    type: 'GET',
    dataType: 'json', // added data type
    success: function (res) {
        var grand_total = 0;

        $.each(res, function (key, value) {
            var product = value.id;
            var qty = value.Number_of_item;
            var price = value.Price;
            var tot = price * qty;
            var markup = "<tr>"
                + "<td class='width-10'><a href='#' class='remove-item' ><i id = '" + product + "' class='fa fa-times-circle'></i></a></td>"
                + "<td>" + product + "</td>"
                + "<td class='width-50 center' id = 'price" + product + "'  >" + price + "</td>"
                + "<td class='qty-txt-box'><input name='quanitity' type='text' id = 'qty" + product + "' class = 'quantity' value='" + qty + "'><i  class='fa fa-refresh'></i></td>"
                + "<td class='width-50 center' ><div id = 'total" + product + "' class = 'total' >$" + tot + "</div></td>"
                + "</tr>";

            grand_total = grand_total + tot;
            $('#yourID').append(markup);
        });
        $('#total').html("$" + grand_total);
    }
});

更新按钮的脚本

$('#update').click(function (e) {
    e.preventDefault();
    jsonObj = [];
    var qty;
    url = "/shopping_cart/update";
    $(".quantity").each(function (e) {// get value of inputs fields
        qty = $(this).val();
        jsonObj.push(qty);
    });
    console.log(jsonObj);
    data = {'quantity': jsonObj};
    $.ajax({
        type: 'post',
        datatype: ' json',
        url: url,
        data: data,
        success: function (data) {
            console.log(data);
        },
        error: function (err) {
            error = "";
            for (key in err.responseJSON) {
                error += err.responseJSON[key] + "<br>";
            }
            if (error)
                $("#error p").html("<p>" + error + "</p>");
            else
                $("#error p").html("<p>" + err.responseText + "</p>");
            $("#error").show();
        }
    });
});

烧瓶更新路线

@shopping_cart.route("/shopping_cart/update", methods=['GET', 'POST'])
@login_required
def update():
    data = request.args.get('quanitity')
    print(data)
    '''return None I tried data = request.args.getlist('quanitity')
    data = request.get_json()
    data = request.json'''
    return jsonify({'message': 'done'})

我想打印该值,以便可以更新 sqlAlchemy 中的表,但我一直得到 None 值。任何帮助表示赞赏。

【问题讨论】:

标签: jquery ajax flask


【解决方案1】:

你使用POST方法发送请求,并从args获取参数。

这需要从form获取参数。

就像:

data = request.form.get('qaunitity')
print(data)

更新

如果要获取form 列表数据。你应该使用如下:

data = request.form.getlist('quantity[]')
print(data)

【讨论】:

  • 我已经尝试过了,但是当我打印(数据)时却没有得到任何结果
  • 谢谢回复,我试过了,现在返回空数组[]
  • 发帖前。什么控制台日志显示数据值?我只是做一个测试。我已经得到了整个列表值。
  • 这样显示输入中的值 (2) ["2", "1"] 0: "2" 1: "1"
  • 好的。现在您在print(data) 下方添加print(request.form)。检查烧瓶输出。为了我的测试。它显示ImmutableMultiDict([('quantity[]', '1'), ('quantity[]', '2')])
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多