首页 > jquery ajax提交参数问题

jquery ajax提交参数问题

大家好,本人小白前端一枚

最近用jquery.datatables插件启用serverSide选项发现他ajax出来的参数在浏览器里看是这样的

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]:mobilePhone
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false
columns[2][data]:email
columns[2][name]:
columns[2][searchable]:true
columns[2][orderable]:true
columns[2][search][value]:
columns[2][search][regex]:false
columns[3][data]:registerDate
columns[3][name]:
columns[3][searchable]:true
columns[3][orderable]:true
columns[3][search][value]:
columns[3][search][regex]:false
order[0][column]:0
order[0][dir]:desc
start:0
length:10
search[value]:
search[regex]:false

这好像是jquery序列化参数的结果

但在后台接收的参数并不是嵌套的对象而是这样的

columns[0][data]: "name"
columns[0][name]: ""
columns[0][orderable]: "true"
columns[0][search][regex]: "false"
columns[0][search][value]: ""
columns[0][searchable]: "true"
columns[1][data]: "mobilePhone"
columns[1][name]: ""
columns[1][orderable]: "true"
columns[1][search][regex]: "false"
columns[1][search][value]: ""
columns[1][searchable]: "true"
columns[2][data]: "email"
columns[2][name]: ""
columns[2][orderable]: "true"
columns[2][search][regex]: "false"
columns[2][search][value]: ""
columns[2][searchable]: "true"
columns[3][data]: "registerDate"
columns[3][name]: ""
columns[3][orderable]: "true"
columns[3][search][regex]: "false"
columns[3][search][value]: ""
columns[3][searchable]: "true"
draw: "1"
length: "10"
order[0][column]: "0"
order[0][dir]: "desc"
search[regex]: "false"
search[value]: ""
start: "0"

nodejs在get请求时req.query可以正确转换成对象但post时req.body就是上面那样子

而搞java spring的完全不接受这种参数传递

请问如何让java spring 和nodejs 的bodyparser接收jquery的json序列化传参呢?


最简单的办法是用JSON来传

jsvar data = {
    columns: [ .... ]
};

$.ajax(url, {
    json: JSON.stringify(data)
});

后台取到 json 之后再反序列化成对象,比如 Java 可以用 fastjson,nodejs 可以直接 JSON.parse(...)

【热门文章】
【热门文章】