返回
前端
分类

当使用简单类型即,ajax上传图片在ie浏览下报http406错误

日期: 2019-11-17 20:48 浏览次数 : 92

解决spring mvc 返回json数据到ajax报错parseerror问题,jsonparseerror

最近使用ajax接收spring mvc传过来的json数据时总是出现parseerror的错误,错误源码如下:

前端:

$.ajax({ 
      type: 'POST', 
      url: "groupFunctionEdit", 
      dataType: 'json', 
      contentType: "application/json", 
      data: JSON.stringify(functiondata), 
      success: function(data){ 
        alert('数据加载成功'+data.msg); 
      }, 
      error: function(xhr, type){ 
        alert('数据加载失败'); 
        console.log(type); 
      } 

后台Controller:

@RequestMapping("/groupFunctionEdit")   
  public @ResponseBody Object groupFunctionEdit(@RequestBody List<YyGroupFunction> yyGroupFunctionList) throws JsonProcessingException{ 

    return "success"; 
  } 

查询资料发现有如下解答:

必赢备用网址 ,当使用简单类型即:String这样的类型来接收数据时,不需要使用@RequestBody这个注解。

这里需要使用spring mvc处理json的依赖jar包:jackson.databind.jar

解决办法:

前端不用修改,在后台对需要的数据进行map封装再转化为String类型:

@RequestMapping("/groupFunctionEdit")   
  public @ResponseBody Object groupFunctionEdit(@RequestBody List<YyGroupFunction> yyGroupFunctionList) throws JsonProcessingException{ 
     Map<String,Object> map = new HashMap<String,Object>(); 
     map.put("msg", "success"); 
     ObjectMapper mapper = new ObjectMapper(); 
     String msg = mapper.writeValueAsString(map); 
    return msg; 
  } 

这样传到前端的数据变成了:

{"msg":"success"}

再使用jQuery可以解析到,不会报错。

以上所述是小编给大家介绍的解决spring mvc 返回json数据到ajax报错parseerror问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对帮客之家网站的支持!

mvc 返回json数据到ajax报错parseerror问题,jsonparseerror 最近使用ajax接收spring mvc传过来的json数据时总是出现parseerror的错误,错误源码...

     前端使用uploadify图片上传控件,后端使用spring mvc框架,ajax上传图片在ie浏览下报http406错误,如图1:

必赢备用网址 1

图1:错误消息

经本地debug调试,uploadify控件在ie浏览器下request header accept为“text/*”,而在chrome浏览器下为“*/*”;

补充下Http请求头accept属性含义:Accept代表发送端(客户端)希望接受的数据类型;查看MediaType.java可查询所有数据类型;eg:Accept ; text/html application/xhtml_xml,application/xml;text:用于标准化地表示的文本信息,文本消息可以是多种字符集或多种格式的;text/html 表示html文档Application:用于传输应用程序数据或者二进制数据;application/xml 表示xml文档;如图2:

必赢备用网址 2

图2:accpet数据类型枚举类

继续debug发现ajax请求,返回结果转化为前台所需json数据时,spring mvc框架会根据返回结果选择可客户端所接受的类型,AbstractMessageConverterMethodProcessor.java部分源码如下:

必赢备用网址 3

当使用简单类型即,ajax上传图片在ie浏览下报http406错误。判定客户端所能接受数据类型

例如:注解为@ResponseBody数据返回类型为Map<String,Object>,其可接受的数据类型为application/json和application/*+,若数据返回类型为String,其可接受的数据类型为*/*;

       由于uploadify控件在ie下请求request头header accpet为“text/*”,而返回类型只能接受application/json和application/*+,因此会报错,错误信息大致如下:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

解决方案:

1、spring json解析配置supportedMediaTypes属性增加text/json;

必赢备用网址 4

spring mvc bean配置

2、设置reponse head accept 为“application/json”,使用处理流方式实现json输出;

必赢备用网址 5

第一次写博客,你的点赞是我最大的支持!本文为作者原创,转载请标明出处: