您的位置:首页 > Web前端 > JavaScript

在使用ajax向后台发送json数据,存在格式不正确的问题

2016-11-28 23:11 1031 查看
在一次servlet服务器的项目中,想在前台使用json向后台发送请求,其中data的格式如下:

var requestData = {
"services": [{
"lightbulb" : [{"alpha":0}],
"o
4000
peration_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"),
};
结果成功解决了这一问题。虽说是解决了,但只是采用了绕开问题的方法,对于这个问题的发生表示不解,希望能有高手帮小生指点迷津。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐