jQuery:使用jTable的参数发布表单

时间:2014-02-05 16:21:52

标签: jquery ajax json jquery-jtable

简介

我正在使用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是如何做到的呢?

1 个答案:

答案 0 :(得分:0)

我最终使用了这个序列化代码https://stackoverflow.com/a/17488875/992988,并且处理这个序列化形式的服务器端逻辑和来自protected protected $middleware = [ //here go the other middleware classes 'App\Http\Middleware\SetLang', ]; 的任何内容都可以是相同的。