在使用ajax向后台发送json数据,存在格式不正确的问题
在一次servlet服务器的项目中,想在前台使用json向后台发送请求,其中data的格式如下:
var requestData = { "services": [{ "lightbulb" : [{"alpha":0}], "operation_status":[{"status":0}] }], "device_type": util.getQuery("device_type"), "device_id": util.getQuery("device_id"), "open_id": util.getQuery("open_id"), };ajax发送代码如下:
$.ajax({ url:"/panel/device", type:"GET", dataType:"json", data:requestData, success:function(data){ if("true" == data.flag){ console.log("申请数据成功:" + JSON.stringify(data)); //renderPage(data); } else{ console.log("申请回馈:" + JSON.stringify(data)); } }, error:function(data){ console.log("获取数据失败:" + JSON.stringify(data)); } });
在后台servlet中使用getParameter方法获取data,对于device_type,device_id和open_id的获取没有问题,但services竟然为null。
在查看ParameterMap之后,发现我的json数据被解析成奇怪的数据:
{"services[lightbulb][alpha]":["0"],"services[operation_status][status]":["0"],"device_type":[""],"device_id":["gh_1eebc4626432_b3c36eb78c00a1d1"],"open_id":[""]}
这显然存在了解析的错误。反复检查、修改requestData的格式,修改dataType以及ContentType均不奏效。后来,受网上启发,将services部分单独取出来,变成如下的形式:
var services = { "lightbulb" : [{"alpha":0}], "operation_status":[{"status":0}] } var requestData = { "services": JSON.stringify(services), "device_type": util.getQuery("device_type"), "device_id": util.getQuery("device_id"), "open_id": util.getQuery("open_id"), };
结果成功解决了这一问题。虽说是解决了,但只是采用了绕开问题的方法,对于这个问题的发生表示不解,希望能有高手帮小生指点迷津。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了