2015-12-01 1 views
5

Следующий код javascript работает с окном входа в facebook и позволяет пользователю войти в систему. Значения отклика захватываются, и я знаю, что он работает, когда появляются предупреждения, когда настройка, но я не могу передать значение обратно методу контроллера.передать переменную ответа javascript на функцию контроллера пружины

@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 

Цените ответов.

+0

Ваш контроллер с аннотацией @RequestMapping ("/ HelloController ")? – reos

+0

@RequestMapping (value = "/ HelloController", method = RequestMethod.POST) public String getAccessToken ( – vbNewbie

+1

Можете ли вы опубликовать весь свой класс контроллера? – Mohit

ответ

2

Проблема может заключаться в том, что вы используете новую версию JQuery, которая по умолчанию отправляет данные запроса как данные формы сообщения, а не 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"); 
     } 
     }); 

Для справки см этот пост: Send JSON data via POST (ajax) and receive json response from Controller (MVC)

+0

Помогла ли вам это? Пожалуйста, примите ответ, если это так. –

+0

Извините за Спасибо, – vbNewbie

+0

Прошу прощения, я просмотрел эту программу и все еще получаю ту же ошибку. – vbNewbie

Смежные вопросы