表单如何传数组?

勇敢的少年
  • 1k

要传一个表单,里面有一个数组,数组里是一些对象

但是发出去的格式是这样的:

导致后台收不到

我希望是

scGoodsopextendDataParamList[0].goodsopextendId

这里的数组长度是不一定的

前端就是ajax发送的 data是带数组的对象

$.ajax({
            url: url,
            data: params,
            type: type ? type : "post",
            contentType: contentType ? contentType : "application/x-www-form-urlencoded; charset=UTF-8",
            dataType: "json",
            cache: false
        })

如何解决?

回复
阅读 1.1k
4 个回答

不太明白图片内容,建议贴关键测试数据

解决方案:沟通

您可以把params,Json序列化一遍(当然需要跟后台老哥沟通)通过字符串形式发给后端老哥

JSON.stringify(params)

$.ajax({
            url: url,
            data: JSON.stringify(params),
            type: type ? type : "post",
            contentType: contentType ? contentType : "application/json; charset=UTF-8",
            dataType: "json",
            cache: false
})

这样序列化之后就能正常传给后端了,但是需要后端再进行反序列化之后就能正常解析了

表单也行,不过你需要自己把你的参数格式手动转换成scGoodsopextendDataParamList[0].goodsopextendId 这种,不推荐吧,太恶心了。和后端商量下,这个复杂的格式用json类型来传多香,本来表单就不太适合这种数组格式的传输:

$.ajax({
            url: url,
            data: JSON.stringify(params),
            type: type ? type : "post",
            //换成json类型
            contentType: contentType ? contentType : "application/json; charset=UTF-8",
            cache: false
})

简单格式(键值对)可以用 Query String 格式来发送。但复杂格式(JS 对象)建议先转换成文本可描述的格式比如 XML、JSON 或者自定义格式。

像现在这种情况,建议直接使用 JSON 格式(主要是 JavaScript 处理 JSON 方便),直接将整个 JSON 字符串传送到后台,由后台使用 JSON 库再恢复成对象来使用。

前端转 JSON 容易(假设数据对象是 data):

JSON.stringify(data)

后端拿到文本之后,再用工具转成内存数据结构,

  • Node.js 直接用 JSON.parse() 就可以转
  • .NET 可以用 Newtonsoft Json.Net 库
  • Java 可以用 Fastjson,Gson 等库
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏