在使用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"),
};
结果成功解决了这一问题。虽说是解决了,但只是采用了绕开问题的方法,对于这个问题的发生表示不解,希望能有高手帮小生指点迷津。
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"),
};
结果成功解决了这一问题。虽说是解决了,但只是采用了绕开问题的方法,对于这个问题的发生表示不解,希望能有高手帮小生指点迷津。
相关文章推荐
- SSH框架中使用Ajax向后台发送参数,存在乱码的问题。
- 将表单序列化之后变成的json格式的数据无法通过Ajax发送到后台的解决
- 使用jQuery发送POST,Ajax请求返回JSON格式数据
- 使用Ajax发送Struts2请求返回JSON数据格式
- 前端使用Jquery的getJSON方法,后台使用PHP,解决IE和火狐Firefox中存在的跨域ajax请求问题。
- 有关用AJAX发送json数据到后台的问题总结
- 使用ajax接收后台发送过来的json数据
- ajax发送json格式数据到后台(输入流content)
- 分布式架构项目中各模块中页面发送ajax请求后台json数据的传输问题
- var dataObj=eval("("+data+")");//转换为json对象(解决在ajax返回json格式数据的时候明明正确的获取了返回值但是却就是进不去success方法的问题。格式错误)
- ajax根据ID查询数据库并返回Json格式数据返回js,使用append显示到页面。判断json值为[]或者[[]]的问题。
- token获取不到,原来是数据格式的问题 要和后台的数据格式一致,$.ajax中contentType: “application/json” 的用法
- 使用ajax接收后台发送过来的json数据方法
- Ext2.2与Struts2集成,使用Json数据格式传输数据问题
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- FireFox中使用JQuery的ajaxfileupload插件返回JSON格式数据提示保存的解决方法。
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- SSH三大框架集成中,使用jQuery框架 Ajax技术返回json格式的数据(二)
- 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- 后台对象,使用google json组件用json格式返回给前端的问题