我正在调用jquery-ajax中的struts2动作,正确调用动作方法方法,但遗憾的是没有调用动作成功页面。 js方法是我用于Google OAuth2.0的方法。
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>
更新:
我刚检查过,我在动作方法中设置了一些cookie值,cookie在客户端得到了更新。但是,成功的响应是buildprofile.jsp,它应该被更改但是它显示了最后一页。
对ajax的响应现在转到错误回调函数。
您的建议受到高度赞赏。
答案 0 :(得分:1)
首先确保网址是正确的操作,似乎url : "googlesignup"
需要像url : "googlesignup.action"
这样的东西,您可以通过在地址栏中输入其网址来手动测试它并检查您是否看到结果是buildprofile.jsp
。
其次,您需要定义正确的success
方法以显示最终结果页面。像
$.ajax(
....
success: function(result){
$("#someDiv").html(result);
}
});
确保页面中有<div id="someDiv"></div>
。