异步提交表单多个应用

今天,在完成文章留言功能的时候,想实现用户留言信息异步提交,并在最开始的页面显示留言是否成功与否!经过一个上午的思考以及实践,现有两种方法可以实现其功能。
  第一种:利用JQuery的Ajax函数:
function load(){
 var str=$("#replyform").serialize();
$.ajax({
    type: "POST",
    cache: false,
    url:"/On/myblog/Addleftwd.action",
    data:str,
    success: function(msg){
 $("#result").html(msg);
    }
  });
}
第二种:利用JQuery的load()函数:
function load(){
 var str=$("#replyform").serialize();
  alert(str);
  $("#result").load("/On/myblog/Addleftwd.action?"+str);
}
第三种:直接利用Struts 2.1.6中提供的异步提交标签:
又有两种:
<s:url var="l" action="Addleftwd.action" namespace="/myblog"></s:url>
<sx:a  href="%{l}"  formId="replyform" targets="result">
     点击此链接
</sx:a>
此标签放在提交表单外;
<sx:submit id="reply_go" value="提交"  targets="result"></sx:submit>
此标签放在提交表单内部。

在利用Struts中自带的这些异步提交标签时,有事会发现一些属性不会被对应的表单域值所填从,不知道这是不是一个小BUG。
但是在利用前两种方法时,需要将表单域序列化,然后做最参数传递给Action,结果在留言内容部分出现乱码,试着用下面的方式在Action内部解决,还是显示乱码:
public Leftwd leftwd;
  public String addleftwd()
  { Session sess=new BaseHibernateDAO().getSession();
  Transaction tx=null;
  try{tx=sess.beginTransaction();
  byte[] temp =leftwd.getContent().getBytes("UTF-8");
  leftwd.setContent(new String(temp, "GBK"));
  //leftwd.getContent()=new String(getBytes("UTF-8"),"gb2312");
  Timestamp datetime = new Timestamp(new Date().getTime());
  leftwd.setDate(datetime);
  sess.saveOrUpdate(leftwd);
  tx.commit();
  setMessage("发表留言成功!");
  }
  catch(Exception e ){if(tx!=null){tx.rollback();setMessage("抱歉!服务器繁忙!请稍后再试!");}
  }
  finally{sess.close(); return "addleftwd";}

 
  }
希望高人指点一下!谢谢!!
我的文章显示界面:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<%@ page contentType="text/html; charset=GBK" %>
 <%

 //得到本页的参数内容
 int totals=0,allrecords=1,prePageNo=1,pageNo=0,nextPageNo=1,preOk=1,nextOk=1;
 
      if(request.getParameter("allrecprds")!=null){allrecords = Integer.parseInt(request.getParameter("allrecords").toString());}
   if(request.getParameter("pageno")!=null){pageNo = Integer.parseInt(request.getParameter("pageno").toString());
 
 
   }  prePageNo = pageNo;
 nextPageNo=pageNo;
 if (pageNo==0) nextOk=0;
 if (pageNo*3>allrecords) preOk=0;
 
 //计算上一页和下一页的页码及按钮的状态

%>
<html>
<head>
<sx:head debug="true" extraLocales="en-us,nl-nl,de-de"/>
<script type="text/javascript" src="/On/JS/jquery-1[1].3.2.js"></script>
<script type="text/javascript" src="/On/JS/nav.js"></script>
<s:include value="/all.jsp"></s:include>
<script type="text/javascript" src="/On/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
 tinyMCE.init({
  mode : "textareas",
  theme : "simple"
   
 });


function load(){
 var str=$("#replyform").serialize();
$.ajax({
    type: "POST",
    cache: false,
    url:"/On/myblog/Addleftwd.action",
    data:str,
    success: function(msg){
 $("#result").html(msg);
    }
  });
}
 
</script>


<title>无标题文档</title>
<style>
body{
font-family:Arial, Helvetica, sans-serif;
font-size:14px;

}
#topicdetail_content{
border:1px solid #996633;
margin-left:10%;
width:90%;
}
#content{
float:right;
width:80%;
border:1px solid #996633;
height:800px;
margin-top:0px;
}
#header{
float:left;
line-height:14px;
font-family:Arial, Helvetica, sans-serif;
font-size:20px;
color:#FFCC33;
margin-left:0px;
width:100%;
height:30px;
background:url(/On/jpg/nav.gif) repeat;
}
#header #headerul{
margin-top:1px;
margin-bottom:1px;
margin-left:0px;
list-style:none;
}
#header #headerul li{
text-align:center;
padding:5px 5px 5px 5px;
border: 1px solid #ffffff;

display: block;
float:left;
}
#header #author{
width:20%;

}
#picture{
width:100%;
height:300px;
}
#header #topic{
width:80%;

}
#authorinfo{
margin-left:0px;
list-style:none;
}
#authorinfo #authorinfoul{
margin-left:0px;}
#authorinfoul li{
margin-left:0px;
}
#leftbar{
border:1px solid #996633;
margin-left:0px;
width:20%;
float:left;
}
#elm{
font-family:Arial, Helvetica, sans-serif;

}
#leftwd_content{
float:right;
width:80%;
border:1px solid #996633;
margin-top:0px;
}

#leftwd_leftbar{
border:1px solid #996633;
margin-left:0px;
width:15%;
float:left;
height:250px;
}
#authorinfo{
margin-left:0px;
list-style:none;
}
#authorinfo #authorinfoul{
margin-left:0px;}
#authorinfoul li{
margin-left:0px;
}

#rightbar{
float:left;
height:250px;
width:80%;
}
#firstbar{
border:1px solid #FFFFFF;
width:100%;
height:10%;}
#leftword{
width:100%;
height:100%;
}
#lastbar{
border:1px solid #FFFFFF;

width:100%;
height:10%;
margin-bottom:0px;}
#changepage{
float:right;
width:80%;
border:1px solid #FFCCFF;
margin-top:0px;
}
#reply{
float:right;
width:80%;
border:1px solid #996633;
margin-top:0px;
}
#reply_go{
width:50px;
height:20px;
display:block;
border:1px solid #FFCCFF;
}
#changepage a{
background:#3366CC;
float:right;
width:60px;
display:block;
color:#FFFFFF;

}
</style>
</head>

<body>
<div id="topicdetail_content">
 <div id="header">
  <ul id="headerul">
  <li id="author">作者</li>
  <li id="topic">正文</li>
  </ul>
  </div><!--end header-->
<div id="leftbar">
<div id="authorinfo">
  <ul id="authorinfoul">
  <li id="photo"><a href="/On/myblog/showblog.action?mem=${member.id}"><img src="${member.picture}" id="picture"/></a></li>
   <li>姓名:<s:property value="member.name"/></li>
  <li>浏览次数:<s:property value="member.blogtimes"/> </li>
  <li>积分:<s:property value="member.money"/></li>
 <li>来自于:<s:property value="member.adress"/></li>
 <li>是否在线</li>
 <li>我要给他发送信息</li>
  </ul>
</div>
</div><!--end leftbar-->
<div id="content">
<H1 align="center">
<s:property value="topicblog.name"/></H1>
 <h4 align="center"><s:property value="topicblog.data"/><s:property value="topicblog.times"/><br></h4>

 <s:textarea readonly="true"  id="elm" name="elm1" value="%{topicblog.content}" rows="42" cols="70" style="width:100%"/>
 </div>
<!--留言显示-->
<s:iterator value="leftwdinfo">
<div id="leftwd_content">

<div id="leftwd_leftbar">
<div id="authorinfo">
  <ul id="authorinfoul">
    <li>姓名:<s:property value="name"/></li>
  <li id="photo"><img src="${picture}" width="160" height="170" /></img></li>
 <li>博客文章:<s:property value="topicnum"/></li>
  <li>积分:<s:property value="money"/></li>
 <li>来自于:<s:property value="adress"/></li>
 <li>是否在线</li>
 <li>我要给他发送信息</li>
  </ul>
</div>
</div><!--end leftbar-->
<div id="rightbar">
<div id="firstbar">
<strong>发表时间:<s:property value="date"/></strong>
</div>
<div id="leftword"><s:property value="content"/></div>
<div id="lastbar"></div>
</div>
</div><!--end leftwd_content-->
</s:iterator> 
<div id="changepage">
总共<s:property value="%{attr.allrecords}"/>留言
<a href="showtopicdetail.action?id=${topicblog.id}&mem=${topicblog.memberId}&pageno=${request.pageno}&up=false ">上一页</a>
<a href="showtopicdetail.action?id=${topicblog.id}&mem=${topicblog.memberId}&pageno=${request.pageno}&up=true ">下一页</a>
</div>
<!-- 留言板块 -->
<div id="reply">
<strong>发表评论</strong><hr />
<div id="result">
</div>
<div id="reply_content">
<s:if test="%{#session.member!=null}">
<s:form id="replyform" method="post" theme="xhtml">
<s:hidden value="%{topicblog.id}" name="leftwd.topicBlogId"></s:hidden>
<s:text name="%{topicblog.id}"></s:text>
<s:hidden value="%{session.member.id}" name="leftwd.id"></s:hidden>
<s:textarea  id="elm"  name="leftwd.content" rows="6" cols="8" style="width:100%"/>
<a href="javascript:load()"><img src="/On/jpg/download.gif"/></a>
<sx:submit id="reply_go" value="提交"  targets="result"></sx:submit>
</s:form>
 <s:url var="l" action="Addleftwd.action" namespace="/myblog"></s:url>
<sx:a  href="%{l}"  formId="replyform" targets="result">
     点击此链接
</sx:a>

</s:if>
<s:else>
请先<a href="/On/login.jsp">登录</a>或<a href="/On/register.jsp">注册</a>后才能留言!
</s:else>

</div>
</div>
</div>
</body>
</html>


 

发布了17 篇原创文章 · 获赞 4 · 访问量 5668

猜你喜欢

转载自blog.csdn.net/jasstion/article/details/83459653
今日推荐