javascript - 将两个请求集成到一个 Javascript 中

标签 javascript jquery html ajax request

$("input[type='checkbox']").on("change",function(){
    if($(this).is(":checked")){
        $.ajax({
            url: portfolio_data_url,
            type: 'POST',
            data: "id="+$(this).val(),
            success:function(r){
            // succcess call
            }
        })
     }
 })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<form>
    <div><input type="checkbox"  value="0" checked>All</div>
    <div><input type="checkbox"  value="1">AppID</div>  
    <div><input type="checkbox"  value="2">Vendor</div>
</form>

我有几个复选框,其值是使用 POST 请求传递的。如果选中一个复选框,则该值将传递给 POST 请求。

但我已经有了传递 POST 请求的代码:

list.js

$(function () {   
    var table = $("#portfolio").DataTable({
        "ajax": {
            "url": portfolio_data_url,
            "type": "POST"
        },    
        lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],    
        "stateSave": true,
        "processing": true,
        "serverSide": true,
        "deferRender": true,
        "language": datatables_language,    
        "order": [[ $(".portfolio thead th").index($(".portfolio thead .appid")), "desc" ]],    
        "columnDefs": [
            {
                "searchable": false,
                "orderable": false,
                "targets": "no-sort"
            }
        ]
    })
});

如何将代码集成到 list.js 中,以便一次查询即可完成所有操作。

因为现在发送了两个不同的请求,导致信息输出不正确。

最佳答案

您可以使用 .DataTable 函数在一个请求中发送复选框选中的值,如下所示:

试试这个:

$(function () {   
    var table = $("#portfolio").DataTable({
        "ajax": {
            "url": portfolio_data_url,
            "type": "POST",
            "data": function(d){
                var ids = $('input:checkbox:checked').map(function(){
                        return this.value; 
                }).get();
                d.ids = ids; 
            }
        },    
        lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],    
        "stateSave": true,
        "processing": true,
        "serverSide": true,
        "deferRender": true,
        "language": datatables_language,    
        "order": [[ $(".portfolio thead th").index($(".portfolio thead .appid")), "desc" ]],    
        "columnDefs": [
            {
                "searchable": false,
                "orderable": false,
                "targets": "no-sort"
            }
        ]
    })
});

Datatable 中使用 data 参数作为函数允许将附加数据发送到服务器

Official Documentation

注意:您将获得作为数组的选中复选框值,您可以在 .get() 之后使用 .join(',') > 将值作为逗号分隔的字符串发送以直接在查询中使用

此外,当用户选中任何复选框时,我们可以刷新数据表 ajax 以发送更新的选中复选框,如下所示:

$("input[type='checkbox']").on("change",function(){
  table.ajax.reload();
});

关于javascript - 将两个请求集成到一个 Javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000476/

相关文章:

javascript - 使用 jquery 将单个值分配给具有相同类名的文本字段

javascript - 表单 - 同步请求并在提交时显示 div

javascript - 启用禁用下拉菜单和提交按钮

javascript - jquery 数据表排序插件根本不起作用

javascript - Angularjs Material - 同步多个选择框

javascript - 确定单击了哪个元素

javascript - 如何正确编写这个 window.history.go(-historyCount)

javascript - 向下滚动时标题褪色 - 也适用于向上滚动

javascript - 如何创建在使用 Ajax 或刷新页面时不刷新的顶部栏?

c# - 将按钮保持在表格的右下角