如何解析发送jquery表的参数

时间:2014-10-21 14:09:50

标签: java jquery spring-mvc datatable

我编写了一个在客户端使用JQuery DataTable的简单Spring MVC Web应用程序。 DataTable使用服务器端处理模式。 DataTable使用参数发出请求(在我的例子中):

draw:1
columns[0][data]:name
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:type
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:action
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:true
columns[2][search][value]:
columns[2][search][regex]:false
order[0][column]:0
order[0][dir]:asc
start:0
length:10
search[value]:
search[regex]:false

我不知道如何解析columns[i][data]columns[i][name]columns[i][searchable]等参数。原因是,因为我不知道有多少表格列我会的。如何解决这个问题呢? 这是我的Spring控制器:

@RequestMapping(value = "/getImageWrappers", method = RequestMethod.POST)
    public String getImageWrappers(@RequestParam Integer draw,
                                                 @RequestParam Integer start,
                                                 @RequestParam Integer length,
                                                 @RequestParam(value = "search[value]") String searchText){
    }

和DataTable配置:

$('#imageWrapperTable').DataTable({
            columns:[
                {"data" : "name"},
                {"data" : "type"},
                {"data" : "action"}
            ],
            "processing": true,
            serverSide: true,
            ajax: {
                url: '/getImageWrappers.json',
                type: 'POST'
            }
        });

2 个答案:

答案 0 :(得分:0)

在json数组中,我会用jquery做这样的事情:

function displayData(x) {
x.success(function(data) {

    $.each(data.columns, function(i, paramenter) {
        $.each(parameter, function(a, b) {
            $('#somediv').append('column'+parameter+' -> data: '+b+' ');
        });
    });

}),
x.error(function(data) {
    //error message
})
}//end displayData

所以你可以遍历你的阵列,但你必须玩它,我没有测试它,但总的来说这是个主意。希望它有所帮助。

答案 1 :(得分:0)

我只是通过添加此代码来解决这个问题

$('#imageWrapperTable').DataTable({
        columns:[
            {"data" : "name"},
            {"data" : "type"},
            {"data" : "action"}
        ],
        "processing": true,
        serverSide: true,
        ajax: {
            url: '/getImageWrappers.json',
            type: 'POST',
            datatype: 'json',
            data: function(d){
                 //add your custom param here
                 d.name = "zxbing";

                 //this will put all query strings to a json object string
                 return JSON.stringify(d);
            }
        }
    });

通过这种方式,您只需要将一个查询字符串传输到服务器端的JSON对象。