2 votes

Comment appeler une méthode en Scala via javascript et ajax ?

Je ne sais pas si mon titre était peut-être un peu trompeur. Mais voici ce pour quoi j'ai vraiment besoin d'aide.

Je fais une entrée sur cette url :

$.get("/fb/login/"+fbEmail, function(data){
   console.log(data);
});

C'est mon itinéraire :

GET /fb/login/:email  presentation.controllers.Auth.authenticateSocialNetwork(email:String)

Et voici mon action :

def authenticateSocialNetwork(email:String) = Action {
   if(!editorRepo.getEditorByEmail(email).isEmpty){
      Redirect(routes.Profile.editorProfile).withSession(Security.username -> email)
   } else {
      Redirect(routes.Profile.initiatorProfile).withSession(Security.username -> email)
   }
}

Je m'attends à ce que mon action obtienne appelé et les feux de ce qu'il y a dedans. En d'autres termes, Redirection de .

Mais ce qui se passe réellement, et qui n'est pas si illogique, c'est que mon appel $.get reçoit une réponse avec ma redirection.

Comment puis-je réellement appelez mon action-méthode, sans envoyer une réponse à javascript ?


Voici ma fonction en javascript, je poste ce snippet pour qu'il soit plus clair dans notre discussion dans les commentaires ci-dessus.

function addClickToLoginButtons(){
$("#loginWithFb").click(function(){
    FB.login(function(response){
        if(response.authResponse){
            FB.api('/me', function(response){
                var fbEmail = response.email;
                $.get("/fb/isRegisteredAtNetwork/"+fbEmail+"/facebook", function(data){
                    if(data == "true"){
                        if(confirm("Do you want to log with facebook-account "+fbEmail+"?")){
                                $.get("/fb/login/"+fbEmail, function(data){  *//HERE'S WHERE I WOULD WANT TO CALL MY METHOD IN SCALA*
                                    console.log(data);
                                });
                        } else {
                            console.log("try again with a different facebook-account");
                        } //end confirm else
                    } else {
                        console.log("Logged in not in database");
                    }//end get else
                });
            });
        } else {
            console.log("permission not granted");
        } // end authResponse else
    }, {scope: 'email'});
});
}

5voto

Peter Points 1898

Dans votre action, au lieu de renvoyer Redirect, renvoyer Ok(urlToBeRedirectedTo).withSession(...) . Une fois cette réponse reçue dans le code javascript, faites votre travail et ensuite appelez window.location = urlToBeRedirectedTo; .

Ceci ajoutera l'email à la session, et redirigera vers l'URL désirée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X