【教程】Ajax请求发送成功但不进success的解决方法

1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了

前端:

01$.ajax({
02 type : "get",
03 data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()},
04 url : "${ctp}/ViewOperate/ShowViewSql",
05 dataType : "json",
06 success : function(data){
07   console.log(data);
08   layer.alert(data,{
09     skin: 'layui-layer-molv'
10   });
11 }
12 error : function(data){
13   layer.alert("进入了error方法",{
14     skin: 'layui-layer-molv'
15   });
16 }
17});

后端:

1@RequestMapping(value="/ShowViewSql",method=RequestMethod.GET)
2@ResponseBody
3public String showCreateViewSql(@RequestParam(value="dbId",required=false)Integer dbId,
4   @RequestParam(value="viewId",required=false)Integer viewId) {
5 return "abc";
6}

原因:后台返回的json数据是一个纯String类型的对象时,前端dataType属性设置为json后,会认为这个由String对象转换的json数据格式不是标准的json格式,所以就去执行error对应的方法了。

 

解决方法一: 后端不用改,只需要把前端ajax请求中的dataType属性设置为text即可

01$.ajax({
02   type : "get",
03   data : {'dbId':node.dbId,'viewId':node.id,'date':new Date()},
04   url : "${ctp}/ViewOperate/ShowViewSql",
05   dataType : "text",
06   success : function(data){
07     console.log(data);
08     layer.alert(data,{
09       skin: 'layui-layer-molv'
10     });
11   }
12   error : function(data){
13     layer.alert("进入了error方法",{
14       skin: 'layui-layer-molv'
15     });
16   }
17});

   

解决方法二: 后端使用json_encode输出 标准json;

 

附加:

1. 嵌入的json需要加入 JSON.parse() ,转换json数据,

      例子:$.each(JSON.parse(data),function(i,v)

 

教程 2023-02-19 13:05:26 通过 网页 浏览(141)

共有0条评论!

发表评论