以下javascript代码与出现的facebook登录窗口一起使用,并允许用户登录.捕获响应值,我知道它可以在设置中出现警报,但我无法将值传递回控制器方法.
@RequestMapping(value ="/getAccessToken" , method = RequestMethod.POST)
public @ResponseBody String getAccessToken(@RequestBody String token){
System.out.println(token);
return token;
}
Run Code Online (Sandbox Code Playgroud)
Javascript方法调用:
function doLogin() {
FB.login(function(response) {
alert(response);
console.log(response);
if (response.authResponse) {
alert(response.authResponse.userID);
alert(response.authResponse.accessToken);
var Token = response.authResponse.accessToken;
alert(Token);
$.ajax({
type: "POST",
url: "/HelloController/getAccessToken",
data: Token,
success: function (result) {
alert("Token");
},
error: function (result) {
alert("oops");
}
});
document.getElementById('loginBtn').style.
display = 'none';
getUserData();
}}, {perms:'manage_pages',
scope: 'email,public_profile', return_scopes: true});
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
WARN 25660 --- [nio-8080-exec-9]
o.s.web.servlet.PageNotFound :
Request method 'POST' not supported
Run Code Online (Sandbox Code Playgroud)
感谢回应.
问题可能是您使用的是新版本的 JQuery,它将请求数据作为 post 表单数据而不是默认的 JSON 发送。尝试将您的 ajax 调用更改为以下内容。您的控制器无法识别表单数据,因此如果是这种情况,您应该会看到 404。
$.ajax({
type: "POST",
traditional: true,
url: "/HelloController/getAccessToken",
data: JSON.stringify(Token),
success: function (result) {
alert("Token");
},
error: function (result) {
alert("oops");
}
});
Run Code Online (Sandbox Code Playgroud)
有关参考,请参阅这篇文章:通过 POST (ajax) 发送 JSON 数据并从控制器 (MVC) 接收 json 响应
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |