我知道,这个主题中有很多问题(和答案),但是没有一个对我有帮助。 我需要一个主意..或东西。
我在JSP和Servlet中使用数据表。 我有一个简单的表,其中包含一个输入字段。 我尝试了许多解决方案,例如: https://www.gyrocode.com/articles/jquery-datatables-how-to-submit-all-pages-form-data/#solution-direct
应该做的,但不是。 这是我的JavaScript代码:
$(document).ready(function() {
var tablam = $('#myTable').DataTable({
responsive: true,
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Hungarian.json"
}
});
$('#submitButton').click( function() {
var form = document.forms['myForm'];
var params = tablam.$('input').serializeArray();
$.each(params, function(){
// If element doesn't exist in DOM
if(!$.contains(document, form[this.name])){
// Create a hidden element
$(form).append(
$('<input>')
.attr('type', 'hidden')
.attr('name', this.name)
.val(this.value)
);
console.log(form[this.name].name + ': ' + form[this.name].value);
}
});
});
});
如您所见,最后我将其写入控制台,它显示:
...
product15:
product36:
product68: 1
product69: 2
product70: 3
product71: 4
product16:
product65:
...
在测试用例中,我跳至第5页,将1,2,3,4写入4行,然后跳回到第1页并提交。因此似乎所有隐藏字段都存在。
但是,这是从Chrome的“网络”标签中获得的,因为我知道这是请求中已提交值的列表:
fixTable_length: 10
product88:
product66:
product44:
product89:
product2003:
product41:
product22:
product61:
product57:
product90:
这10个元素恰好是第一页的10行。仅此而已。 是的,如果我在服务器端对其进行测试,则仅存在NULL。
怎么了,为什么没有提交隐藏文件?
!!!解决方案!!!
好的,所以我没有向您展示按钮部分。在我的按钮上,有一个onclick()函数,该函数首先运行,而不是我的jquery函数,该函数创建了隐藏字段,但是在提交之后。 在一个功能中,它就像一种魅力一样工作:)