jquery datatable ajax重新加载再次提交表单

jquery datatable ajax重新加载再次提交表单,jquery,ajax,datatables,Jquery,Ajax,Datatables,我使用jQueryDataTables从服务器获取数据,然后编辑此表以添加新数据。在添加自动刷新后,创建请求将重复提交。这是我的桌子 var dataTableInitilizationConfig = { "iDisplayLength": 50, "aLengthMenu": [20, 50, 100, 200], "bJQueryUI":false, "bDestroy":true, "bProcessing":true, "sDom": '

我使用jQueryDataTables从服务器获取数据,然后编辑此表以添加新数据。在添加自动刷新后,创建请求将重复提交。这是我的桌子

var dataTableInitilizationConfig = {
    "iDisplayLength": 50,
    "aLengthMenu": [20, 50, 100, 200],
    "bJQueryUI":false,
    "bDestroy":true,
    "bProcessing":true,
    "sDom": '<"search-bar"f>rt<"clear">'+ '<"select-bar"l>t<"clear">' +
    '<"bottom-left"i><"bottom-right"p>',
    "oLanguage": {
        "sSearch": "",
        "sSearchPlaceholder": "Search",
        "sLengthMenu": "Show: _MENU_ ",
        "sNext": "Next page"
    },

    'columns':[ //Column names
    ],
    'ajax': function (data, callback, settings) {
        var data_table = this;

        data_table.fnProcessingIndicator(true);

        $.ajax({
            url: '/getFeatures',
            type: 'GET',
            success: function(result){

                callback({
                    'aaData': result
                });

                data_table.fnProcessingIndicator(false);
            },
            failure: function(){
                data_table.fnProcessingIndicator(false);
            }
        });
    }
};
如果我创建了一个新行,则该行将成功创建,表将刷新,并显示新行。现在,如果我立即尝试编辑新创建的行,那么create调用将与update调用一起再次发生,我将得到两个数据相同的行。下面是我的编辑电话

    $('#addNewRow').on('submit', function(){
        $.ajax({
            url: '/updateFeature',
            data: $('#addNewRow').serialize(),
            type: 'POST',
            success: function(){
                data_table_api.ajax.reload();
            }
        });
    });
请注意,添加和编辑的表单是相同的。另外,如果删除ajax.reload调用,一切正常,但不会自动刷新

原因

您已经在代码中将提交处理程序附加到同一表单
addNewRow
,两次用于添加和更新行

$('#addNewRow').on('submit', function(e) { 
   // ... skipped ...
});
解决方案

基于您的代码结构和逻辑,可能有许多解决方案。最简单的方法是用下面的代码分离前面的处理程序

$('#addNewRow').off('submit');
$('#addNewRow').on('submit', function(e) { 
   // ... skipped ...
});
原因

您已经在代码中将提交处理程序附加到同一表单
addNewRow
,两次用于添加和更新行

$('#addNewRow').on('submit', function(e) { 
   // ... skipped ...
});
解决方案

基于您的代码结构和逻辑,可能有许多解决方案。最简单的方法是用下面的代码分离前面的处理程序

$('#addNewRow').off('submit');
$('#addNewRow').on('submit', function(e) { 
   // ... skipped ...
});