gpt4 book ai didi

javascript - 将变量从前端传递到后端

转载 作者:行者123 更新时间:2023-12-01 14:28:34 26 4
gpt4 key购买 nike

我正在开发一个网站,该网站的后端使用 Java(使用 Spring 托管)完成,前端由 Javascript 管理。现在,我已经设法使用 RestController 将代码从后端发送到前端,但我无法设法将数据从前端发送到后端。更具体地说,我正在尝试创建一个带有后端验证的登录表单。

HTML 表单代码:

<form ng-submit="login">
<input type="text" ng-model="form.username" placeholder="username">
<input type="password" ng-model="form.password" placeholder="password">
<input type="submit" value="Login">
</form>

Javascript 登录代码:

function auth($scope, $http, AppSettings, $state) {
'ngInject';
$scope.form = {};

$scope.login = () => {
$http({
method: 'POST',
url: AppSettings.getApiUrl('/login'),
data: {
user: $scope.form.username,
password: $scope.form.password,
},
// data: {}
}).then(response => {
if (response) {
console.log(response.data);
localStorage.setItem('token', response.data.token);

$state.go('main');
}
}).catch(error => {
console.log(error);
});
};
}

Java 登录处理程序:

@RestController
public class LoginHandler {

private static final Logger log = LoggerFactory.getLogger(LoginHandler.class);


@RequestMapping("/login")
public void getLoginInfo(@RequestParam Map<String,String> requestParams) {
RestTemplate restTemplate = new RestTemplate();
User user = restTemplate.getForObject("http://localhost:3003/auth", User.class);
log.info(user.toString());

}

}

最佳答案

当您使用 AngularJS 将数据发送到后端并使用 data设置参数的关键,信息实际上是在请求体中发送的,而不是请求参数。

因此,在 Spring MVC Controller 上,您宁愿使用 @RequestBody将值分配回 Map<String, String> .更改此行:

public void getLoginInfo(@RequestParam Map<String,String> requestParams) {

为此:

public void getLoginInfo(@RequestBody Map<String,String> requestParams) {

关于javascript - 将变量从前端传递到后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49830009/

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