在使用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。
- 上一篇:没有了
- 下一篇:没有了
