gpt4 book ai didi

javascript - jQuery 方法无法将数据传递到 REST 服务器

转载 作者:行者123 更新时间:2023-12-02 23:55:01 25 4
gpt4 key购买 nike

这些代码是关于 jQuery JavaScript 的,它将数据传递到 Spring Boot 的 RESTful 服务器。首先,下面的代码是Rest Controller源码。

@RestController
@RequestMapping(value="/rest/user")
public class UserRestController {

@Autowired
private UserService userService;

@PostMapping("login")
public ResponseEntity<Boolean> authenticated(@RequestBody User user) {

System.out.println(user.getUsername() + user.getPassword()); // return values are NULL

Boolean blogin = userService.authenticate(user.getUsername(), user.getPassword());
if(!blogin)
return new ResponseEntity<Boolean>(blogin, HttpStatus.NOT_ACCEPTABLE);

return new ResponseEntity<Boolean>(blogin, HttpStatus.OK);
}
}

以及 jQuery JavaScript 代码。

==index.html ==

<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="/js/ajaxlogin.js"></script>
</head>
<body>
<h1>Please sign in</h1>
<form method="post" id="loginForm" th:object="${loginForm}">
<div><label for="username">username</label></div>
<input id="username" type="text" name="username" th:value="*{username}"/>

<div><label for="password" th:value="*{username}">password</label></div>
<input id="password" type="password" name="password" th:value="*{password}" />

<div>
<input type="submit" value="Login" />
<a href="index.html" th:href="@{/posts}">Cancel</a>
</div>
</form>
<div id=helloUserDiv></div>
</body>
</html>

== ajaxlogin.js ==

$(document).ready(function () {

$("#loginForm").submit(function (event) {

//stop submit the form, we will post it manually.
event.preventDefault();
ajax_login_submit();
});
});

function ajax_login_submit() {

var user = {
username : $("#username").val,
password : $("#password").val
}

$.ajax({
type: "POST",
contentType: "application/json",
url: "rest/user/login/",
data: JSON.stringify(user),
dataType: 'json',
cache: false,
timeout: 600000,
success: function (data) {

var resultJson = JSON.stringify(data);
$('#helloUserDiv').html(resultJson);
console.log("SUCCESS : ", data);
alert(data);

},
error: function (e) {

var resultJson = e.responseText;
$('#helloUserDiv').html(resultJson);
console.log("ERROR : ", e);
}
});
}

但是结果失败。错误代码 406。我不确定这些代码的错误是什么。

已更新

我修改了 JavaScript,如下所示,

function ajax_login_submit() {

var user = {
username: $("#username").val(),
password: $("#password").val()
};

console.log(user.username);
console.log(user.password);
console.log(user);

$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "rest/user/login",
data: JSON.stringify(user),
//dataType: 'json',
success: function (data) {

var resultJson = JSON.stringify(data);
$('#helloUserDiv').html(resultJson);
console.log("SUCCESS : ", data);
alert(data);

},
error: function (e) {

var resultJson = e.responseText;
$('#helloUserDiv').html(resultJson);
console.log("ERROR : ", e);
}
});
}

console.log(user) 返回以下正确的值,

{用户名:“约瑟夫”,密码:“密码”}

但是RestController带来了一些问题。

@RestController
@RequestMapping(value="/rest/user")
public class UserRestController {

@Autowired
private UserService userService;

@PostMapping("login")
public ResponseEntity<Boolean> authenticated(@RequestBody User user) {

System.out.println(user.getUsername() + user.getPassword()); // return values are "josephnull"

Boolean blogin = userService.authenticate(user.getUsername(), user.getPassword());

System.out.println(user.getUsername() + user.getPassword()); 此行返回“josephnull”,即我的意思是密码值为空。我不明白为什么密码值为空。

最佳答案

错误代码406表示数据 Not Acceptable 。以下是详细信息。 Error code 406 details.从代码中删除 dataType: 'json' 即可正常工作。通过使用这一行,代码在我删除它后抛出解析错误,错误消失并且响应成功。

这是工作代码,忽略url,因为我已经使用了我的。

$.ajax({
type: "POST",
contentType: "application/json",
url: "hms/raw/login",
data: JSON.stringify(user),

cache: false,
timeout: 600000,
success: function (data) {

var resultJson = JSON.stringify(data);
$('#helloUserDiv').html(resultJson);
console.log("SUCCESS : ", data);
alert(data);

},
error: function (e) {

var resultJson = e.responseText;
$('#helloUserDiv').html(resultJson);
console.log("ERROR : ", e);
console.log(JSON.stringify(e));
}
});

关于javascript - jQuery 方法无法将数据传递到 REST 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55438861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com