2015-12-01 10 views
5

Der folgende JavaScript-Code funktioniert mit dem Facebook Login-Fenster erscheint und ermöglicht einem Benutzer sich anzumelden. Die Antwortwerte werden erfasst und ich weiß, dass es funktioniert, da Warnungen bei Setup angezeigt werden, aber ich kann den Wert nicht an eine Controller-Methode übergeben.pass javascript response variable an feder controller funktion

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

    System.out.println(token); 

    return token; 
    } 

Javascript-Methode aufgerufen:

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

Der Fehler ich erhalte, ist die folgende:

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

Antworten zu schätzen wissen.

+0

ist der Controller mit @RequestMapping ("/ Hello kommentierte ")? – reos

+0

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

+1

Können Sie Ihre gesamte Controller-Klasse veröffentlichen? – Mohit

Antwort

2

Das Problem könnte sein, dass Sie eine neue Version von JQuery verwenden, die Anforderungsdaten als Post-Formulardaten anstelle von JSON als Standard sendet. Versuchen Sie, Ihren Ajax-Anruf zu ändern. Die Formulardaten würden nicht von der Steuerung erkannt werden, so dass, wenn dies der Fall ist, sollten Sie ein 404.

$.ajax({ 
     type: "POST", 
     traditional: true, 
     url: "/HelloController/getAccessToken", 
     data: JSON.stringify(Token), 
     success: function (result) { 
      alert("Token"); 
     }, 
     error: function (result) { 
      alert("oops"); 
     } 
     }); 

als Referenz siehe diesen Beitrag sehen: Send JSON data via POST (ajax) and receive json response from Controller (MVC)

+0

Hatte Ihnen dies geholfen? Bitte akzeptieren Sie die Antwort, wenn es tat. –

+0

Entschuldigung für die spätes Follow-up & ich habe es schließlich herausgefunden, werde aber Ihre Antwort akzeptieren. Danke – vbNewbie

+0

Es tut mir leid, ich habe dieses Programm erneut besucht und immer noch den gleichen Fehler. – vbNewbie