用的strus2,我想执行一个action,不过执行完action后,页面不进行跳转,只显示一个提交成功的提示。请教大家这样的效果该怎么实现?用Ajax么?怎么做?

解决方案 »

  1.   

    可以用Ajax实现,也可以把表单提交到一个隐藏的 iframe里,服务器返回给隐藏iframe使其调用js来调用父窗口的js(window.parent.XXXXXX)
      

  2.   


        你需要的提示是一messageBox的形式显示呢?还是以一个字符串的形式显示在页面上呢?
         如果是前者,你需要通过ajax完成。后者的话怎么都行!
      

  3.   

    除了AJAX,用隐藏的IFRAME或者FRAMESET都可以.不过它们恐怕比AJAX还费事,毕竟AJAX就是专门为了简化这种操作而产生的.
      

  4.   

    谁能告诉我下用ajax怎么实现?能给点代码么?
      

  5.   

    感觉用隐藏iframe可以使页面看上去容易理解,就像普通的页面submit表单那样。而且当表单参数非常多的时候,用ajax会写得很郁闷,但Ajax出现的首要原因毕竟是用来实现当前页面内部的服务器访问,用什么方法可以自己衡量。
      

  6.   

    有两种办法呀,一种提交的时候,把那些内容放在session或者其他地方,刷新页面后再通过DOM把他填进表单
    另一种就是用ajax咯
      

  7.   

    //组织策划给你需要的参数
    codeSQM="codeSQM="+codeSQM+"&checkID="+id+"&checkCODE="+incode;

    $.ajax({
       type:"post",
       url:"",// action地址
       data:codeSQM, //传输的参数,也可以用序列化直接提交表单参数
       dataType:"text",
       error:ajaxErrorReceiverSQM, //异常函数自己定义
       success:function(cflag){
      
       })
    必须要因jquery的包
    Action中接受参数值不用再说了吧,
      

  8.   

    成功的提示就在
    success:function(cflag){
      
    }中书写
      

  9.   

    如果使用ajax的话估计会更麻烦...
      

  10.   


    在Action中处理完之后要 给它返回一个参数,可以用
    PrintWrite out = response.getWrite();
    out.print(0);//比如返回一个0 表示录入数据库成功,1 录入失败
    最好Action一定要 return null,在
    success:function(cflag){
       if(cflag==0){
       alert("");
     }
     ........
    }
      

  11.   

    用jQuery也可以,$.post("xxx.action",{这里是参数,格式"name":myanme,"age":myage......},function(data){
            提交成功后在这里处理
             data是Action返回来的值
    });本人比较喜欢用jQuery
      

  12.   

    提交表单不跳转要返回值用Ajax
    定时关闭alert好像不行,可用div模拟
      

  13.   

    如果不用Ajax的话,提交表单页面肯定是会跳转的,如果想回到原来的页面的话,只能是设置跳转页面为当前页面,然后再把值传回来填充。用Ajax吧,有jQuery、ext这样的开源控件可以很方便实现提交表单。
      

  14.   

    用JQUERY做吧 挺不错的 例子到网上搜搜就有的是
    $.post("User/user.action?method=add",
    { userId:userId,
    userName:userName
    },
    function(returnedData, status) {
    if("success" == status) {
    //alert(returnedData.userId);
    $('#flag').html("用户(" + returnedData.userName + ")添加成功!");
    //增加行
    var tbody = $("table tbody");
    var newDivCheckbox = $("<div/>");
    var newDivId = $("<div/>");

    var newTr = $("<tr/>");
    var newTdCheckbox = $("<td/>");
    var newTdId = $("<td/>");
    var newTdUserId = $("<td/>");
    var newTdUserName = $("<td/>");
    var newTdPassword = $("<td/>");
    var newTdOrgId = $("<td/>");
    var newTdUserLevel = $("<td/>");

    //checkbox
    var newCheckbox = $("<input type='checkbox' name='checkDelete'/>");
    newCheckbox.val(returnedData.userId);
    newDivCheckbox.append(newCheckbox);
    var addId = $("table tbody tr:last").children().next().children().html();
    addId = parseFloat(addId) + 1;
    newDivId.append(addId);

    //赋值
    newTdUserId.html(returnedData.userId);
    newTdUserName.html(returnedData.userName);
    newTdPassword.html(returnedData.password);
    newTdOrgId.html(returnedData.orgId);
    newTdUserLevel.html(returnedData.userLevel);

    //行增加TD
    newTdCheckbox.append(newDivCheckbox);
    newTr.append(newTdCheckbox);
    newTdId.append(newDivId);
    newTr.append(newTdId);
    newTr.append(newTdUserId);
    newTr.append(newTdUserName);
    newTr.append(newTdPassword);
    newTr.append(newTdOrgId);
    newTr.append(newTdUserLevel);

    //tbody增加行newTr
    tbody.append(newTr);
    //alert(tbody.html());
    $.pdialog.closeCurrent();
    } else {
    $('#flag', opener.document).html("添加失败!");
    }
    }
    );
      

  15.   

    貌似不用再传数据吧,应为你的数据在怎么样也是在request里面或者session,就几个标签里面服务器跳转他们应该还在的,你试试跳转到原来页面,页面返回一个数,if(I=1){提交成功}else....。我想应该不需要重新传参数的,你试试看吧
      

  16.   

    使用Ajax,成功后在页面中弹出一层显示,1秒后消失,使用setTimeout函数就OK了,看看相关文档,你会很快就做出来的
      

  17.   

    你们说这种方法现实中根本不可行。。首先,我的提交页面是通过一个action得到的,里边有很多选项的内容是通过action实现的,通过跳转到这个页面那不还要跳转到上一个action,就算我把数据传过去,那又如何?如果用chain传递,客户端地址是要改变的,这种页面的客户体验状态不也太差了么?如果用redirectaction来传递,数据是过不来的。就算这种方法能实现,客户的体验状态依旧很糟糕了。。
    我ajax没学过。。这两天写了个。请大家帮忙看看究竟哪错了。。readystate一直是1.是哪出了问题我把代码贴下。。
      

  18.   


          <script type="text/javascript">
              function sub(i){
                  var fck = FCKeditorAPI.GetInstance('content'); 
                 var content = fck.GetXHTML(true);
                  var title = document.getElementById("title").value;
                  var comment = document.getElementById("comment").value;
                  var reprint = document.getElementById("reprint").value;
                  var publish = document.getElementById("publish");
                  var preview = document.getElementById("preview");
                  var formSub = document.getElementById("form1");
                  if(title.replace(/<(?!img|input|object)[^>]*>|\s+/ig, "") == ""){
                      alert("请填写标题");
                      return false;
                  }else if(content.replace(/<(?!img|input|object)[^>]*>|\s+/ig, "") == ""){
                      alert("请输入内容");
                      fck.Focus();
                      return false;
                  }
                  if(i==0){
                   document.getElementById("title2").innerHTML = "标题:"+title;
                   document.getElementById("state").innerHTML = "转载:"+reprint+"&nbsp;&nbsp;"+"评论:"+comment;
                   document.getElementById("content2").innerHTML = content;
                      publish.style.display="none";
                      preview.style.display="";
                  }else if(i==1){
                   createXMLHttpRequest();
                   alert("dsf1");
                   xmlrequest.open("POST","draft_save",false);alert("dsf2");
                   xmlrequest.onreadystatechange = processResponse;alert("dsf3");
                   alert(xmlrequest.readyState);
                  }else if(i==2){
                   formSub.action="article_save";
                      formSub.submit();
                  }else {
                      form.action="#";
                  }
              }
              function processResponse(){
                  alert("dsf");
                  if(xmlrequest.readyState == 4&&(xmlrequest.status == 200||xmlrequest.status==304)){
                      alert("sdffds");
                  }
              }
              function reback(){
               var publish = document.getElementById("publish");
                  var preview = document.getElementById("preview");
                  publish.style.display="";
                  preview.style.display="none";
              }
              var xmlrequest;
              function createXMLHttpRequest(){
                  if(window.XMLHttpRequest){
                      xmlrequest = new XMLHttpRequest();
                  }
                  else if(window.ActiveXObject){
                      try{
                          xmlrequest = new ActiveXObject("Msxml2.XMLHTTP");
                      }catch(e){
                          try{
                              xmlrequest = new ActiveXObject("Microsoft.XMLHTTP");
                          }catch(e){}
                      }
                  }
              }
          </script>
      

  19.   

    用jquery可以实现异步提交表单的效果.可以查下这方面的资料,很容易的!
      

  20.   

    我自己傻逼代码少了个send。才发现。。结贴。想混分的让我怎么说呢?