2016-03-29 4 views
1

Ich rufe struts2-Aktion von jquery-ajax auf, die Methode der Aktionsmethode wird ordnungsgemäß aufgerufen, aber leider wird die Aktionserfolgsseite nicht aufgerufen. Die js-Methode ist diejenige, die ich für Google OAuth2.0 verwende.Struts2-Erfolgsseite wird nicht aufgerufen

JS:

function onSignIn(googleUser) { 
    // Useful data for your client-side scripts: 
    var profile = googleUser.getBasicProfile(); 
    console.log("ID: " + profile.getId()); // Don't send this directly to your server! 
    console.log('Full Name: ' + profile.getName()); 
    console.log('Given Name: ' + profile.getGivenName()); 
    console.log('Family Name: ' + profile.getFamilyName()); 
    console.log("Image URL: " + profile.getImageUrl()); 
    console.log("Email: " + profile.getEmail()); 

    // The ID token you need to pass to your backend: 
    var id_token = googleUser.getAuthResponse().id_token; 
    console.log("ID Token: " + id_token); 
    console.log("Request sent through ajax jquery"); 

    $.ajax({ 
      type : "POST", 
      url : "googlesignup", 
      data:"idtoken="+id_token, 
      dataType : "text", 
      async: false, 
      // onSuccess:function(){ 
      // console.log("success"); 
      // } 
     });} 

struts.xml:

<action name="googlesignup" class="com.msventure.web.actions.SignUpAction" method="googleSignUp"> 
     <result name="success">/buildprofile.jsp</result> 
     <result name="fail">/signup.jsp</result> 
     <result name="index">/signup.jsp</result> 
     <result name="input">/signup.jsp</result> 
    </action> 

Update:

  1. I i gerade überprüft, bin die Einrichtung Einige Cookie-Werte in der Aktionsmethode, die Cookies werden im Client aktualisiert. Die Antwort vom Erfolg ist jedoch buildprofile.jsp. Sie sollte geändert werden, zeigt aber die letzte Seite an.

  2. Die Antwort auf AJAX geht jetzt zur Fehlerrückruffunktion.

Ihre Vorschläge sehr geschätzt.

+0

Es ist eine Ajax-Anfrage. Wie zeigen Sie die Antwort darauf? –

+0

@Aleksandr M: Ja, ich verstehe das, ich denke, das ist der Grund, warum es sich nicht ändert, ich habe eine Weiterleitung und es funktioniert gut. – coolmego

+0

Was ist der Sinn von Ajax, wenn Sie danach eine Umleitung machen? –

Antwort

1

zunächst sicherstellen, dass die URL korrekt Aktion ist, wie es scheint, dass url : "googlesignup" Bedürfnisse irgendeine Sache zu sein wie: url : "googlesignup.action", können Sie es manuell testen, indem Sie die entsprechende URL in der Adressleiste eingeben und prüfen Sie, ob Sie das Ergebnis sehen, die buildprofile.jsp ist.

Zweitens müssen Sie die richtige success Methode definieren, um die Endergebnisseite anzuzeigen. wie

$.ajax(
     .... 
     success: function(result){ 
     $("#someDiv").html(result); 
     } 
}); 

Vergewissern Sie sich ein <div id="someDiv"></div> auf Ihrer Seite haben.

+1

Struts2 kann leere Erweiterung standardmäßig verwenden. –

+0

Wie von @RomanC erwähnt, wenn Sie die '' setzen, können Sie 'url:" googlesignup "' ohne Probleme verwenden –

+0

Siehe http: // stackoverflow. com/a/17570547/573032, und vor allem der Kommentar von Steven Benitez. –