将javascript响应变量传递给spring controller函数

时间:2015-12-01 19:11:33

标签: javascript spring

以下javascript代码适用于出现的facebook登录窗口并允许用户登录。捕获响应值,我知道它可以在设置中出现警报,但我无法将值传递回控制器方法。

 @RequestMapping(value ="/getAccessToken" , method = RequestMethod.POST)
 public @ResponseBody String getAccessToken(@RequestBody String token){

     System.out.println(token);

     return token;
  } 

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});
     };

我得到的错误如下:

WARN 25660 --- [nio-8080-exec-9] 
o.s.web.servlet.PageNotFound             : 
Request method 'POST' not supported

欣赏回应。

1 个答案:

答案 0 :(得分:2)

问题可能是您正在使用新版本的JQuery,它将请求数据作为后期表单数据而不是JSON发送为默认值。尝试将您的ajax调用更改为以下内容。您的控制器无法识别表单数据,因此如果是这种情况,您应该看到404。

created_at

供参考,请参阅此帖:Send JSON data via POST (ajax) and receive json response from Controller (MVC)