1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了
前端:
03 | data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, |
04 | url : "${ctp}/ViewOperate/ShowViewSql", |
06 | success : function(data){ |
09 | skin: 'layui-layer-molv' |
12 | error : function(data){ |
13 | layer.alert("进入了error方法",{ |
14 | skin: 'layui-layer-molv' |
后端:
1 | @RequestMapping(value="/ShowViewSql",method=RequestMethod.GET) |
3 | public String showCreateViewSql(@RequestParam(value="dbId",required=false)Integer dbId, |
4 | @RequestParam(value="viewId",required=false)Integer viewId) { |
原因:后台返回的json数据是一个纯String类型的对象时,前端dataType属性设置为json后,会认为这个由String对象转换的json数据格式不是标准的json格式,所以就去执行error对应的方法了。
解决方法一: 后端不用改,只需要把前端ajax请求中的dataType属性设置为text即可
03 | data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()}, |
04 | url : "${ctp}/ViewOperate/ShowViewSql", |
06 | success : function(data){ |
09 | skin: 'layui-layer-molv' |
12 | error : function(data){ |
13 | layer.alert("进入了error方法",{ |
14 | skin: 'layui-layer-molv' |
解决方法二: 后端使用json_encode输出 标准json;
附加:
1. 嵌入的json需要加入 JSON.parse() ,转换json数据,
例子:$.each(JSON.parse(data),function(i,v)
共有0条评论!