我的本意是想通过js来解决刷新页面时超链接重复提交的问题,可是加上js代码后页面跳转总是不对,请高手指点,代码如下:
   这是页面超链接的代码:
 <s:iterator value="dirList">
      <a href="mysong!myDirSongList?dirId=${dirNum }&userId=${session.userId }"><s:property value="dirName"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#"  onclick="javascript:deleteD('${dirNum }','${session.userId }');">删除</a>
 </s:iterator >   这是js 代码:
               function deleteD(dirId,userId){ if(confirm("确定删除?")){

      window.location.href = "mysong!delDir?dirId="+dirId+"&userId="+userId;
        
}else{
return;
}
   }
   
   这是struts2.xml的配置:
    <action name="login" class="qqAction">
       <result name="saved">/dirsongs.jsp</result>           
    </action>   这是后台action里要调用的方法:
     public String delDir(){
this.dirList = this.qqManager.deleteDir(this.userId, this.dirId);
         return "dirsongs";
}   结果本该是跳转到dirsongs.jsp,但是经过多次测试,后台的action里的delDir()方法会执行,如果struts.xml里如果没有配<result name="dirsongs">/dirsongs.jsp</result>也会报错,而且配置了<result name="input">/dirsongs.jsp</result>,但是虽然会找到相应的result ,但是并不会跳转到相应的dirsongs.jsp,而是跳转到首页,如果把不用js只是普通的超链接就能顺利执行通过,只是无法控制刷新时重复提交。

解决方案 »

  1.   

    干嘛不用 action跳转呢,反而要用 location.href
      

  2.   

    因为你删除时的链接是:href="#" 肯定挑战到首页,你可以直接写href="javascript:deleteD();"
    试下了,我以前写过,这样写的。
      

  3.   

    window.location.href = "mysong!delDir.action?dirId="+dirId+"&userId="+userId;
      

  4.   

    既然用struts,就用action来跳转吧
      

  5.   

    引用 3 楼 redlotus_lyn 的回复:
    window.location.href = "mysong!delDir.action?dirId="+dirId+"&amp;userId="+userId;既然用struts,就用action来跳转吧