Home  >  Q&A  >  body text

java - 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序列化传参呢?

迷茫迷茫2718 days ago337

reply all(1)I'll reply

  • 迷茫

    迷茫2017-04-17 14:32:00

    The easiest way is to use JSON

    jsvar data = {
        columns: [ .... ]
    };
    
    $.ajax(url, {
        json: JSON.stringify(data)
    });
    

    The background fetches json and then deserializes it into an object. For example, Java can use fastjson, and nodejs can directly use JSON.parse(...)

    reply
    0
  • Cancelreply