jeeSite 在jsp中写ajax发送请求404

白小白ovo 发布于 2017/02/22 11:06
阅读 980
收藏 0

加载中
0
Charkey
Charkey

404 就检查一下 controller 的 RequestMapping 是不是和 js 中的 url 一致。

比如: RequestMapping 是不是包含了其他变量,如

@RequestMapping(value = "${adminPath}/sys/user")
白小白ovo
白小白ovo
回复 @Charkey : 控制台这样:URI: /jeesiteDemo/a/a/sys/testUser/check
白小白ovo
白小白ovo
回复 @Charkey : http://localhost:8080/jeesiteDemo/a这段封装成了${ctx}
Charkey
Charkey
回复 @白小白ovo : 我记得 jeesite 中 ctx 是 <c:set var="ctx" value="${pageContext.request.contextPath}${fns:getAdminPath()}"/>,按理应该会带上 /a 才对。你那边先检查一下。
Charkey
Charkey
回复 @白小白ovo : 问题就在这里了:路径不对嘛,所以 404。你 js 中 应该配置的是 ${ctx}/a/sys/testUser/check
白小白ovo
白小白ovo
http://localhost:8080/jeesiteDemo/a/sys/testUser/check 没问题的吧
0
白小白ovo
白小白ovo

谁能帮帮我啊。

0
Charkey
Charkey

看出来了,应该是这个问题了,controller 响应类型不对;

完善答案一下:

Controller 单是加上 @RequestMapping(value = "check"),结果是要返回一个具体视图的,因此 ajax 请求会报错“页面不存在.”。

这里是 ajax 请求,所以需要再加上另外的一个注解 @ResponseBody,直接将 方法的响应内容 返回。

@RequestMapping(value = "check")
@ResponseBody
public String check(String code) {
   String f = "1";
   String sessionCode = ValidateCodeServlet.VALIDATE_CODE;
   sessionCode = "1234";
   if (sessionCode.equals(code)) {
      f = "0";
   }
   return f;
}

这样子,返回的内容就会是“1”或者“0”。

到这里,应该你的代码就能用了。

 

不过呢,我们一般对接口请求的数据都会做规范化,例如返回共同协定的JSON数据结构。

上面的代码,返回的内容会是 Content-Type:text/plain;charset=UTF-8;

当我们让 controller 返回 key-value 类型的数据时,比如 Map,返回的内容是 Content-Type:application/json;charset=UTF-8,

代码这么改:

@RequestMapping(value = "check")
@ResponseBody
public Map check(String code) {
   String f = "1";
   String sessionCode = ValidateCodeServlet.VALIDATE_CODE;
   sessionCode = "1234";
   if (sessionCode.equals(code)) {
      f = "0";
   }
   Map<String, Object> result = new HashMap<>();
   result.put("success", f);
   return result;
}

然后 js 做相应的修改就好了。

Charkey
Charkey
回复 @白小白ovo : 好了,你参考一下。
白小白ovo
白小白ovo
回复 @Charkey : 能简单写下代码么?
0
鞋不强悍
鞋不强悍

check.do?check.html?

返回顶部
顶部