【发布时间】:2015-03-21 15:43:38
【问题描述】:
我正在使用服务器中的 Spring MVC 和客户端中的 JS 和 Ajax 进行登录页面。我不知道出了什么问题,服务器的代码执行但不返回任何内容。 登录.html
<script type="text/javascript">
$(function() {
$(".loguser").click(function() {
var user = $("#login").val();
var pass = $("#pass").val();
$.ajax({
method: "POST",
url : "${prefix}loginUser",
data : "username=" + user + "&password=" + pass,
dataType : "json",
success: function(data){
if (data.res == "YES") alert("ok");
else alert("NOPE");
}
});
})
})
</script>
<table id="userData" class="center">
<tr id="usernametr">
<th><label for="user">Nombre de usuario: </label></th>
<th><input id="login" type="text" name="login" value=""
placeholder="Name" required /></th>
</tr>
<tr>
<th><br /></th>
</tr>
<tr>
<th><label for="pass">Clave de usuario: </label></th>
<th><input id="pass" type="password" name="pass" value=""
placeholder="Password" required /></th>
</tr>
<tr>
<th><button class="loguser">Acceder</button></th>
<th><input type="button" name="lost"
value="He perdido mi clave" /></th>
</tr>
</table>
HomeController.java:
@RequestMapping(value = "/loginUser")
@ResponseBody
@Transactional
public String loginUser(@RequestParam("username") String username,
@RequestParam("password") String pass, HttpServletRequest request, Model model) {
logger.info("Trying to log in {} {}", username, pass);
if (username.length() > 3) {
logger.info("ok");
return new String("[\"res\": \"YES\"]");
} else {
logger.warn("nope");
return new String("[\"res\": \"NOPE\"]");
}
}
我也尝试返回 EntityResponse,但没有任何改变。 Springs 控制台打印记录器信息或警告,但 Firefox 的 javascript 控制台不打印。
【问题讨论】:
-
当您从客户端触发 POST 请求时,您的处理程序方法是如何被调用的,而它绑定到 GET 请求!能否请您提供整个
HomeController正文? -
你知道你在这两种情况下都返回
NOPE? -
HomeController 中没有更多内容。它被标记为
@Controller。 @RealSkeptic LOL 是的,我在帖子中更改了它,但我的来源不同,我现在在这里更改它。 -
您是否尝试过直接访问该 URL 以查看它返回的内容?
-
@RealSkeptic Nop,我该怎么做?你的意思是 reinvasion/loginUser?login=asdf&pass=asdasd ?如果是,是的,我试过了,我收到错误 405 请求方法“获取”不支持。
标签: java javascript ajax spring