在使用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"),
    };

结果成功解决了这一问题。虽说是解决了,但只是采用了绕开问题的方法,对于这个问题的发生表示不解,希望能有高手帮小生指点迷津。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值