开发者社区> angel挤一挤> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【springMVC 后台跳转前台】1.使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中 ----2.前后台都没有报错,不能进入ajax回调函数

简介: 问题1: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示:    问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法不认识最后返回的是给ajax的data,而是以为要去找这个页面所以并未找到!! ...
+关注继续查看

问题1:

使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中

问题展示:

 

 问题解决:

最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法不认识最后返回的是给ajax的data,而是以为要去找这个页面所以并未找到!!

1 @RequestMapping("/queryAllDisease")
2     @ResponseBody
3     public PageInfo<Disease>  queryAllDisease(String productId, ModelMap model, int pageNo , int pageSize){
4             Product product =new Product();
5             product.setProductId(productId);
6             Criteria criteria = getCurrentSession().createCriteria(Disease.class);
7             criteria.add(Restrictions.eq("product", product));
8             return diseaseService.findQuery(criteria, pageNo, pageSize);
9     }
View Code

 

 

 

同样的,如果Controller中的方法执行完成之后  不想返回前台,就此打住,则也需要加上@ResponseBody

因为即使方法返回值为void

spring也会按照前台请求过来的页面地址去找,找不到就会如下:

 

所以,在后台:【以下的代码依旧是  按照前台department/addPosition.htmls继续找下去,如果想在此打住,不要再去前台了,添加注解

1 @RequestMapping("addPosition")
2     public void addPosition(Position position){
3         position.setCreateDate(new Timestamp(System.currentTimeMillis()));
4         position.setUpdateDate(new Timestamp(System.currentTimeMillis()));
5         //操作人  未插入
6         positionService.save(position);
7     }
View Code

 

更改之后如下:

1 @RequestMapping("addPosition")
2     @ResponseBody
3     public void addPosition(Position position){
4         position.setCreateDate(new Timestamp(System.currentTimeMillis()));
5         position.setUpdateDate(new Timestamp(System.currentTimeMillis()));
6         //操作人  未插入
7         positionService.save(position);
8     }
View Code

 

 

问题2:

在此基础上,又发现一种新的情况:

后台代码如下:

 1 @RequestMapping("verifyFormula")
 2     @ResponseBody
 3     public void verifyFormula(String formula){
 4         InfixInToSuffix is = new InfixInToSuffix();
 5         String a = null;
 6         try {
 7             if(is.userPattern(formula)){
 8                 a = is.toSuffix(formula);
 9             }
10         } catch (Exception e) {
11             System.out.println("公式有问题");
12         }
13     }
View Code

或者:

 1 @RequestMapping("verifyFormula")
 2     @ResponseBody
 3     public String verifyFormula(String formula){
 4         InfixInToSuffix is = new InfixInToSuffix();
 5         String a = null;
 6         try {
 7             if(is.userPattern(formula)){
 8                 a = is.toSuffix(formula);
 9             }
10         } catch (Exception e) {
11             System.out.println("公式有问题");
12         }
13         return a;
14     }
View Code

 

这两种情况,虽然前台js中使用ajax访问了后台,但是后台方法处理完

1.void没有返回值  

2.虽然有返回值,但是String a = null;可能会直接将这个a返回,但是a初始化就是Null,也就是没有开辟实际的空间,这样也是返回不到ajax的回调函数中的!!!!!

多注意这两种情况!!

 

正确处理这种情况,应当:

 1     @RequestMapping("verifyFormula")
 2     @ResponseBody
 3     public String verifyFormula(String formula){
 4         InfixInToSuffix is = new InfixInToSuffix();
 5         String a = "";
 6         try {
 7             if(is.userPattern(formula)){
 8                 a = is.toSuffix(formula);
 9             }
10         } catch (Exception e) {
11             System.out.println("公式有问题");
12         }
13         return a;
14     }
View Code

 

最起码的给String a = "";即可!!

 

 

 

问题3:

同样在controller处理完后,前后台都没有报错,但是也是没有进入ajax回调函数

后台错误代码展示:

 1 @RequestMapping(value = "boundWx" ,produces = "text/json;charset=UTF-8")
 2     @ResponseBody
 3     public String boundWx(String name,String password){
 4         List<Member> members = new ArrayList<Member>();
 5         Member member = memberService.findByUsername(name);
 6         if(member == null){
 7             member = memberService.findByMobile(name);
 8             if(member == null){
 9                 members = memberService.findListByEmail(name);
10             }
11         }
12         if(members.size() > 0){
13             member = members.get(0);
14         }
15         if(member != null){
16             if(DigestUtils.md5Hex(password).equals(member.getPassword())){
17                 return "wx/member/index.jhtml";
18             }else{
19                 return "密码有误";
20             }
21         }else{
22             return "用户信息有误";
23         }
24     }
View Code

 

问题解决:

因为这个方法中 返回给前台后是有乱码出现的,所以加了:@RequestMapping(value = "boundWx" ,produces = "text/json;charset=UTF-8")

而问题就出在:此处的produces = "text/json;charset=UTF-8"与返回值的格式并不相符。

 

更改为如下的就可以正常返回了:

@RequestMapping(value = "boundWx" ,produces = "text/html;charset=UTF-8")

 

问题4:

新的同类型问题

ajax + springMVC后台处理完成跳转给前台的ajax的回调函数中,

表现:后台程序执行了三次,但是最后都不会返回到前台回调函数中,且前后台都不报错!

问题:请认真检查前台使用了ajax的是在哪个按钮的点击事件中,这个点击事件是否 return ; 请认真检查前台jsp中是否重复引用了jQuery等js文件导致后台会重复执行几次

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jQuery Ajax 简单的实现跨域请求
jQuery Ajax 简单的实现跨域请求
68 0
第111天:Ajax之jQuery实现方法
由于jQuery中的Ajax方法是用了内置的deferred模块,是Promise模式的一种实现,而我们这里没有讲过,所以我们就不使用这一模式啦。 我们只定义一个Ajax方法,他可以简单的get,post,jsonp请求就可以了。
1094 0
Jquery ajax参数设置
参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址。 type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。
625 0
jQuery Ajax 实例 全解析 (转)
1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。 url (String) : 请求的HTML页的URL地址。 data (Map) : (可选参数) 发送至服务器的 key/value 数据。
911 0
jquery Ajax示例
function ShowMsgText() {     $.ajax({     url:"../datas/jsonTest_1.ashx",        type:"post",     success:function(data){//text,responseText...
726 0
Jquery Ajax WebService
仅供参考 ws.aspx 代码                $.ajax({                    type: "POST",   //访问WebService使用Post方式请求                    contentType: "application/js...
750 0
AJAX的四种回调函数
AJAX的四种回调函数
50 0
基于Vue+Spring MVC+MyBatis+Shiro+Dubbo开发的分布式后台管理系统
本文项目代码: 服务端:https://github.com/lining90567/dubbo-demo-server 前端:https://github.com/lining90567/dubbo-demo-client 最近项目中使用了shiro做权限管理,在开发过程中也踩了一些坑,于是便有了开发个应用巩固一下所学知识的想法,正好在开发的过程里学习一下Vue开发。
2591 0
+关注
angel挤一挤
【任何0基础都能看懂的步骤和解决方法!】
340
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载