选择表单中的复选框时,Ajax调用不起作用

时间:2018-08-23 21:37:57

标签: javascript ajax django

我正在使用django框架开发表单。我有一个表格,其中有一个表格,表格中有一些复选框。我正在将数据收集到字典中,并将其传递给我的django函数。如果我没有选择复选框就提交表单,则工作正常。但是,当我选择复选框时,数据不会发布到views.py文件中。我看到使用console.log在字典中填充了数据。

为此需要指导。

我的html:

<table>
    .....
    .....
</table>
<div class="checkbox">
    <label><input type="checkbox" name="run_prep" value="">Run Prep</label>
</div>
<div class="checkbox">
    <label><input type="checkbox" name="run_post"value="">Run Post</label>
</div>`enter code here`
<div class="checkbox">
    <label><input type="checkbox" name="run_reports" value="">Run Reports</label>`enter code here`
</div>

下面是我的js代码:

$(document).ready(function(){
    $("form").submit(function(e){
        e.preventDefault();

        var data = {};
        form_data = []
        $("tr", "tbody").each(function(row){
            var count_row = true;
            $("input", this).each(function(idx, inp){
                if (!($(this).val())){
                    count_row = false;
                }
            });
            $("select", this).each(function(idx, inp){
                if (!($(this).val())){
                    count_row = false;
                }
            });
            if (count_row){
                row_data = {};
                $("input", this).each(function(idx, inp){
                    row_data[$(this).attr("name")] = $(this).val();
                });
                $("select", this).each(function(idx, inp){
                    row_data[$(this).attr("name")] = $(this).val();
                });
                var id = $(this).attr("id");
                data[id] = row_data;
                form_data.push(data);
                data = {};
            }
        });
        run_check = {};
        $("input[type=checkbox]", this).each(function () {
            if (this.checked) {
                run_check[$(this).attr("name")] = 1;
            }
        });
        var chkname = "run-check"
        data[chkname] = run_check;
        form_data.push(data);
        var csrftoken = Cookies.get('csrftoken');
        $.ajaxSetup({
            beforeSend: function(xhr, settings) {
                if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                    xhr.setRequestHeader("X-CSRFToken", csrftoken);
                }
            }
        });
        console.log(JSON.stringify(form_data))
        $.ajax({
            type: "POST",
            contentType: 'application/json',
            data: JSON.stringify(form_data)
        }).then(function(data){
            console.log(data);
            location.replace(data.redirect);
        });
    });
});

0 个答案:

没有答案