Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DataTable复选框未获取值_Javascript_Html_Datatables - Fatal编程技术网

Javascript DataTable复选框未获取值

Javascript DataTable复选框未获取值,javascript,html,datatables,Javascript,Html,Datatables,长话短说,所以我尝试使用“POST”来获取我的Flask模板中的复选框值。但是,我在模板中的Datatable中使用了一些动态表(Datatable按钮)。这些数据表导致我的post请求不起作用。(不使用datatable,如果它只是一个长的常规表,那么我的post请求将起作用) 将DataTable复选框值解析为POST请求的正确方法是什么?有人知道我的数据表定义有什么问题吗 非常感谢 在烧瓶中: def project(): if request.method=="POST":

长话短说,所以我尝试使用“POST”来获取我的Flask模板中的复选框值。但是,我在模板中的Datatable中使用了一些动态表(Datatable按钮)。这些数据表导致我的post请求不起作用。(不使用datatable,如果它只是一个长的常规表,那么我的post请求将起作用)

将DataTable复选框值解析为POST请求的正确方法是什么?有人知道我的数据表定义有什么问题吗

非常感谢

在烧瓶中:

def project():
   if request.method=="POST":
     selected_tags=request.form.getlist('table_records')
带烧瓶模板的HTML:

   <form action="" method="post">

   <button type="submit" name="Compare" value="Compare" class="btn-link">Compare</button>

   <table id="datatable-buttons" class="table table-striped table-bordered bulk_action">
     <thead>
          <tr>
            <th><input type="checkbox" id="check-all" class="flat"></th>
            <th>Tag</th>
            <th>Release date</th>
            <th>Number of Blocks</th>
          </tr>
     </thead>



{% for each_run in all_runs %}
          <tr>
             <td><input type="checkbox" class="flat" name="table_records[]" value="{{each_run.tag}}"></td>
             <td class=" "><a href= "{{url_for('skybolt_synthesis_tag',tag=each_run.tag)}}"> {{each_run.tag}}</a></td>
             <td>{{each_run.start_time}}</td>
             <td>{{block_count[each_run.tag]}}</td>
             </tr>
{% endfor %}
    </form>
原因 出于性能原因,jQuery DataTables从DOM中删除不可见的行。提交表单时,仅将可见复选框的数据发送到服务器

解决方案1。提交表格 在提交表单时,您需要将已选中且DOM中不存在的元素
转换为

var table=$('#示例').DataTable({
//…跳过。。。
});
$('form')。关于('submit',函数(e){
var$form=$(此);
//迭代表中的所有复选框
表.$('input[type=“checkbox”]”)。每个(函数(){
//如果DOM中不存在复选框
如果(!$包含(文档,本)){
//如果选中复选框
如果(选中此项){
//创建一个隐藏元素
$form.append(
$('')
.attr('类型','隐藏')
.attr('name',this.name)
.val(此.value)
);
}
} 
});          
});
解决方案2:通过Ajax发送数据
var table=$('#示例').DataTable({
//…跳过。。。
});
$(“#btn提交”)。在('click',函数(e){
e、 预防默认值();
$.ajax({
url:“/path/to/your/script.php”,
数据:table.$('input[type=“checkbox”]”)。serialize();
}).完成(功能(数据){
console.log('响应',数据);
});
});
链接
有关更多详细信息,请参阅。

是否用引号括起了复选框的名称属性?是的,我用引号括起了。它不起作用。这看起来像是“DataTable”的问题,如果我应用DataTable ID,则POST不起作用,它似乎忽略了所有复选框变量。获取DataTable中复选框值的正确方法是什么?编辑它是因为发现它是DataTable问题,但仍然无法解决。。。调试。
$(document).ready(function() {
    var handleDataTableButtons = function() {
      if ($("#datatable-buttons").length) {
        $("#datatable-buttons").DataTable({
          dom: "Bfrtip",
          buttons: [
            {
              extend: "copy",
              className: "btn-sm"
            },
            {
              extend: "csv",
              className: "btn-sm"
            },
            {
              extend: "excel",
              className: "btn-sm"
            },
            {
              extend: "pdfHtml5",
              className: "btn-sm"
            },
            {
              extend: "print",
              className: "btn-sm"
            },
          ],
          responsive: true
        });
      }
    };
}