欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ajax提交数据后 回调函数不执行并且Spring mvc控制器 无法解析视图解决办法

程序员文章站 2022-07-15 15:37:25
...

首先先看我的错误代码:

$.ajax({
			type : "POST",
			contentType : 'application/json;charset=UTF-8',
			data : datas,
			url : "adminLoging",
			dataType:"json",
			success : function(data) {
				if(data!=""){
					window.location="jsp/admin.jsp";
				}
			},

		});

后台代码

@RequestMapping("adminLoging")
	public ModelAndView loging(@RequestBody Admin admin, ModelAndView mv){
		if (admin != null) {
			Admin loging = adminService.adminLoging(admin);
			if (loging != null) {
				System.out.println("登陆的对象为:" + loging);
				mv.addObject("admin", loging);
				mv.setViewName("sucess");
			}
		}
		return mv;
	}

这里我是配置了视图解析器所以没用写全路径----

视图配置器很简单-----------------------------------------

只需要这样就可以了

<!-- 配置视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

之所以错呢这是因为ajax请求dataType值为json,jquery就会把后端返回的字符串尝试通过JSON.parse()尝试解析为js对象。

 以下是jquery api的解释:

通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。

其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,

'''注意''',我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。

如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。

这里呢只需要删除 datatype 属性就可以了哦



相关标签: Ajax Spring mvc