jquery datatable ajax重新加载再次提交表单
我使用jQueryDataTables从服务器获取数据,然后编辑此表以添加新数据。在添加自动刷新后,创建请求将重复提交。这是我的桌子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": '
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 ...
});