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

昨天在用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的映射 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
			</list>
		</property>
	</bean>
这一段是配置json模板,配置这里一定要有上一步的依赖包才行,要不然会报错!

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




猜你喜欢

转载自blog.csdn.net/qq_32715873/article/details/53183607
今日推荐