简介
我正在使用jQuery和jTable。我为这个jTable设置了一个过滤器:它是一个包含不同组件(复选框、jQuery UI DatePickers、Sliders等)的大型表单。要在表中进行筛选,我调用load函数:
$('#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,我可以在后面导航到它。S2创建CSV数据并告诉浏览器将其作为文件下载--仍然可以。
问题
我要CSV出口尊重过滤器。我需要将jTable发送到S1到S2的相同数据发送给S2,这样我就可以在S2中重用S1中的过滤逻辑。
jTable发送数据的方式是调用$.ajax()并将该JSON结构作为data传递。jQuery处理从JSON到POST数据的转换,并执行AJAX请求。
不幸的是,我不能对S2做同样的事情--我需要在同时发送POST数据的同时将浏览器发送到S2 --如果我只是使用$.ajax(),浏览器就不会导航到S2。
几乎是一个解决方案
所有组件都位于<form>内部,我只需将其提交给S2即可。不幸的是,这样我失去了所有的转换逻辑,我想重用它。
这将是一个解决方案
如果我能够复制jQuery序列化该JSON以发布数据的方式,我可能会像这里一样快速构建和提交一个表单。那么jQuery是如何做到的呢?
发布于 2015-08-02 11:10:45
最后,我使用了这个序列化代码https://stackoverflow.com/a/17488875/992988和处理这个序列化形式的服务器端逻辑以及来自<form>的任何东西都可以是相同的。
https://stackoverflow.com/questions/21582644
复制相似问题