我正在使用jQuery和jTable。我有一个这个jTable的过滤器:它是一个包含不同组件的大型表单(复选框,jQuery UI DatePickers,Sliders等)。要在表中过滤,我调用加载函数:
$('#table').jtable('load', {
filter_param_1 : $('#some-form-component').val(),
filter_param_2 : someTransformation($('#some-other-component').val()),
...
});
在后端,有一个servlet S1,它解析这个过滤条件并返回带有jTable行的正确JSON - 这很有用。
现在我需要将表数据导出为CSV,因此我有一个不同的后端servlet S2,我可以POST导航到。 S2创建CSV数据并告诉浏览器将其下载为文件 - 仍然可以。
我希望CSV导出能够尊重过滤器。我需要发送与jTable发送到S1到S2相同的数据,这样我就可以重新使用S1中S1的过滤逻辑。
jTable发送此数据的方式是调用$.ajax()
并将该JSON结构作为data
传递。 jQuery处理从JSON到POST数据的转换并执行AJAX请求。
不幸的是,我不能对S2做同样的事情 - 我需要在同时发送POST数据的同时将浏览器发送到S2 - 如果我刚使用$.ajax()
,浏览器将无法导航到S2。 / p>
所有组件都位于<form>
内,我可以将其提交给S2。不幸的是,这种方式我失去了所有的转换逻辑,我想重新使用它。
如果我可以复制jQuery将JSON序列化为POST数据的方式,我可以动态地构建和提交表单,就像here一样。那么jQuery是如何做到的呢?
答案 0 :(得分:0)
我最终使用了这个序列化代码https://stackoverflow.com/a/17488875/992988,并且处理这个序列化形式的服务器端逻辑和来自protected protected $middleware = [
//here go the other middleware classes
'App\Http\Middleware\SetLang',
];
的任何内容都可以是相同的。