![](/img/trans.png)
[英]JSON response from Jquery.ajax is rounding larger number so I can't get correct value
[英]Controller can't receive JSON from JQuery.ajax
我檢查了我的web.xml和spring-servlet.xml,沒有發現任何錯誤。 然后,我檢查了我的Controller和.ajax(),但仍然找不到任何錯誤。 我嘗試JSON.stringify
, @RequestParam
JSON.stringify
,在spring-servlet.xml
添加json handler
。 甚至將@RequestBody
更改為@RequestBody(required = false)
。 他們都不工作,仍然收到此消息:
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleHttpMessageNotReadable Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.Test.Controller.Login.login(com.Test.Model.User)
這是我的控制器:
@RequestMapping(value = "/main", method = RequestMethod.GET)
public String login (@RequestBody User user) {
boolean result = userSer.login(user);
if (result)
return "success";
else
return "fail";
}
我的ajax:
function login() {
//I can read the value in chrome's debug.
var user = {
"username": $("#username").val(),
"password": $("#password").val()
};
$.ajax( {
url: "/login/main",
type: "GET",
dataType: "json",
//contentType:"application/json",
data: JSON.stringify(user),
success: function () {
alert("success")
},
error: function () {
alert("fail")
}
} );
}
我已經嘗試過自己解決此問題,但仍然無法解決。
首先,如果要發送JSON正文,則需要使用POST。 GET在URL中僅包含變量,該變量對您不起作用。 同樣在Web開發中,人們普遍同意您使用POST提交來自用戶的數據。
我已經成功使用了此功能,使用郵遞員進行了測試:
POST: {
"username":"00346845869585",
"password":"test"
}
@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!";
}
public static class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public User setUsername(String username) {
this.username = username;
return this;
}
public User setPassword(String password) {
this.password = password;
return this;
}
}
@RequestMapping(value = "/main", method = RequestMethod.POST)
@ResponseBody
public String login(@RequestBody User user) {
boolean result = user.getPassword().equals("test");
if (result)
return "success";
else
return "fail";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleController.class, args);
}
}
和javascript:
<html>
<head>
<title>Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<form>
<input type="text" id="username"/>
<input type="password" id="password"/>
<input type="submit" id="submit"/>
</form>
<script>
function login() {
var user = {
"username": $("#username").val(),
"password": $("#password").val()
};
$.ajax({
url: "/main",
type: "POST",
data: JSON.stringify(user),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
alert("success")
},
error: function () {
alert("fail")
}
});
}
$("#submit").click(function () {
login();
return false
});
</script>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.