2016-03-29 23 views
1

jquery-ajaxからstruts2アクションを呼び出していますが、アクションメソッドメソッドが正しく呼び出されていますが、残念ながらアクションの成功ページは呼び出されません。 jsメソッドはGoogle OAuth2.0で使用するメソッドです。Struts2の成功ページが呼び出されない

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> 

更新:

    私はちょうどチェックし
  1. 、私は設定していますアクションメソッドのクッキー値によっては、クッキーがクライアントで更新されています。ただし、成功からの応答はbuildprofile.jspですが、変更する必要がありますが最後のページが表示されます。

  2. ajaxへの応答がエラーコールバック関数になりました。

あなたの提案は高く評価されます。

+0

これはAjaxリクエストです。あなたはそれからどのように応答を見せますか? –

+0

@Aleksandr M:はい、これは理解していますが、これが変更されていない理由だと思います。リダイレクトして正常に動作しています。 – coolmego

+0

その後にリダイレクトを行う場合、ajaxのポイントは何ですか? –

答えて

1

最初にURLが正しいかどうか確認してください。url : "googlesignup"は、url : "googlesignup.action"のようなものである必要があります。アドレスバーにURLを入力して手動でテストし、結果がbuildprofile.jspかどうかを確認してください。

第2に、結果の最終ページを表示するには、正しいsuccessメソッドを定義する必要があります。 like

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

あなたのページに<div id="someDiv"></div>があることを確認してください。

+1

Struts2はデフォルトで空の拡張子を使用できます。 –

+0

''を設定した場合@RomanCで述べたように、 'url:" googlesignup "を問題なく使用できます。 –

+0

http:// stackoverflowを参照してください。 com/a/17570547/573032、特にSteven Benitezのコメントです。 –

関連する問題