$(document).ready(function(){
  $("#innerLogin").click(function(){
   $.get("Inner/loginPassName.action",{name:$("#innerUsername").val()},function(rand){
   var encodeRand = rand.substr(0,rand.length/2);
   var encodehrand = rand.substr(rand.length/2,rand.length-rand.length/2);
   var realRand = ukey.DecryptAndVerify(encodeRand, encodehrand);
   var sendmsg = ukey.Sign(realRand+$("#innerUsername").val()+$.md5($("#password").val()));
$.get("Inner/loginPassNameAndPwd.action",{data:sendmsg});
   });
  });
});上面是jquery代码,在sendmsg被发送到服务器端,loginPassNameAndPwd.action执行之后依据配置文件:<action name="loginPassNameAndPwd" class="com.sjtu.tgj.inner.action.LoginEncodeAction" method="HandleNameAndPwd" >
<result name="success" type="freeer">
    <param name="location">/Inner/Main.ftl</param>
</result>
</action>应该跳转到Main.ftl才对,但是实际情况loginPassNameAndPwd已经返回了success,但是页面却没有跳转。
这是为什么呢? 另外补充一点:用户名和密码的input标签没有放入form中,这是为了防止在服务器传回rand信息的时候,用户名和密码框被清空

解决方案 »

  1.   

    action没帖出来呢?有没有报错?
    action 中 返回的success 大小写没弄错吧?
      

  2.   

    return "success"; 这样没错吧,我设了断点,已经确定运行到return "success"这一步了
      

  3.   

    有经验的来说一下啊 是不是ajax异步访问的问题啊,导致不能跳转
      

  4.   

    是不是路径的问题,<param name="location">/Main.ftl</param>
    这样试试看。
      

  5.   

    <param name="location">你确定有这个值吗?
    我也这么试过,貌似是不能调转,不过我的仍然是写的<result/>,
    感觉有点怪,还不如直接作为返回值,在反调函数里获取,然后用js window.location.href=""
      

  6.   

    应该是struts2中,ajax异步的关系,action不能跳转。
    在js里手动写跳转吧,window.location.href。不要在action中处理。
      

  7.   

    个 你要搞清楚  实际上跳转了 因为你是AJax 异步请求,成功以后结果直接作为字符串返回到页面而 不是页面。这里你要手动在JS写跳转。你可以用FireBug一看就知道了