基于jquery发送的值的flask更新数据库

时间:2019-08-28 16:02:11

标签: jquery ajax flask

我正在使用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值。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

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

这需要从form获取参数。

就像:

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

更新

如果要获取form列表数据。您应该使用以下方法:

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