开发者社区> 问答> 正文

ajax提交后台action后,怎么让后台action中通过struts来跳转页面?

由于之前用jquery的submit事件提交表单时,ckeditor中的内容提交不了

$("#sendmail").submit();
所以我换了ajax提交,a但是现在ajax提交有一个问题.我需要的是表单提交到action中,
action中进过struts,跳转到对应的成功界面,但是由于ajax,我action中 的功能实现了,就
是不能进行跳转,界面一直显示发送中,想请问一下各位这是怎么回事.
我期望发生的是ajax只把data传给action后success中不用处理任何东西,由atruts跳转到新jsp
jsp代码

$.ajax({
               type: "POST",
               url: "<%=basePath%>user/sendMail!checkName.action",
               data: parm,
               dataType:"text",
               success: function (data, textStatus) {
                   hiddenProgress();//隐藏进度条
                   if(data=='true'){
                       showProgress("正在发送邮件...");//显示保存进度
                       //$("#sendmail").submit();
                      $.ajax({
                          type: "POST",
                           url: "<%=basePath%>user/sendMail!sendEmail.action",
                           data: parm,
                           dataType:"text",
                           success:function(data){
                              // alert("发送成功");
                              // window.location.href="<%=basePath%>user/user_sendMail_success.jsp";
                           },
                      });

                   }
                ........................
}
action中的部分代码

mailInfoFB.setSended(true);
    mailInfoFB.setFrom("邮件发送成功!");
    return "sendMailSuccess";

展开
收起
a123456678 2016-07-14 11:35:05 3746 0
1 条回答
写回答
取消 提交回答
  • ajax的本质就是异步,既然要想用异步的方式做这功能,就应该考虑用异步的思维去设计你的功能。

    比如:发送成功的话,后台action应该返回json对象是比较合适的,页面收到异步结果后,再进行相应的处理(比如返回{isSuccess:true},表示发送成功,那么页面收到{isSuccess:true}后,再处理一下,notify一下)。

    要么就用提交表单的方式做,发送成功服务器可以直接返回相应的result页面,不成功就hold住表单,返回提交前的页面给用户。

    2019-07-17 19:56:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载