解决SpringMvc+Ajax+echarts请求 调试显示406错误

来源:互联网 发布:组态软件哪个好 编辑:程序博客网 时间:2024/06/05 16:19

昨天在用Springmvc往前台ajax传数据的时候报了406的错误

想了半天,查了资料终于今早搞定~跟大家分享下


后台Controller的代码:

@RequestMapping("/single.do")public @ResponseBody List<SingleModel>  getJson(HttpServletRequest request) throws Exception{System.out.println("single controller");List<SingleModel> list = service.addInfo1();return list;}

这里的@ResponseBody注解将list转化为json传给ajax



ajax的代码,我使用ajax是为了异步获取数据来显示图表(使用echarts),mychart那部分都是显示图表的,不用echarts的可以忽略

 $.ajax({        type : "post",        async : true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)        url : "<%=request.getContextPath()%>/single.do",            data : {},        dataType : "json",        //返回数据形式为json        success : function(result) {            //请求成功时执行该函数内容,result即为服务器返回的json对象            if (result) {                   for(var i=0;i<result.length;i++){                             names.push(result[i].name);    //挨个取出类别并填入类别数组                       nums.push(result[i].num);    //挨个取出销量并填入销量数组                     }                   myChart.hideLoading();    //隐藏加载动画                   myChart.setOption({        //加载数据图表                       xAxis: {                           data: names                       },                       series: [{                           // 根据名字对应到相应的系列                           name: '销量',                           data: nums                       }]                   });                               }               },        error : function(errorMsg) {            //请求失败时执行该函数        alert("图表请求数据失败!");        myChart.hideLoading();        }   })

下面是解决方法!

首先我是使用maven的,要在pom.xml中加入json的依赖包(如果不使用maven就直接下载这几个包)

    <dependency>        <groupId>net.sf.json-lib</groupId>        <artifactId>json-lib</artifactId>        <version>2.4</version>        <classifier>jdk15</classifier>    </dependency>     <dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-core</artifactId>    <version>2.4.1</version></dependency><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-annotations</artifactId>    <version>2.4.1</version></dependency><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.4.1</version></dependency>
这里我的spring版本是4.1.4,基本4.1.X以上的用这个依赖包是没问题的


接下来在你的spring-mvc.xml配置文件中加入:

<!-- 避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --></list></property></bean>
这一段是配置json模板,配置这里一定要有上一步的依赖包才行,要不然会报错!

接下来再运行的时候我就能正常传json到前台ajax了,这是我显示的图表




0 0
原创粉丝点击