静态页面无刷新添加回复,实时更新静态网页 ,不用xml,我用另一种办法实现
适用:带回复/评论的文章页面(.html,.htm格式).
演示页面: http://www.uptoday.cn/shtml/article1537.htm
所用技术:AJAX fso文件操作
原理:在静态页内发表回复,由ajax后台处理回复内容,并回调给前台显示(无刷新)。同时在后台用fso重写此静态页面(服务器上),将回复内容写入。因为前台浏览器上的静态页已下载到客户端,不会受到影响,但一刷新,就是更新后的页面了.
关键代码:
*********前台 article23.htm***********
<HTML>
<SCRIPT LANGUAGE="JavaScript">
function ajax_reply(name,comment,id){
var xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open("POST","reply_submit.asp",true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readystate==1)
{}
else if(xmlhttp.readystate==4)
{
window.alert("感谢您的回复!/n若发现楼数不对,请刷新!");
document.getElementById("reply").innerHTML+=xmlhttp.responseText; //前台显示新回复
}
}
xmlhttp.send("name="+escape(name)+"&comment="+escape(comment)+"&id="+escape(id));
}
}
</SCRIPT>
<BODY>
<div id="title">文章标题</div>
<div id="content">文章内容</div>
<div id="reply">回复内容
<span>用户名1</span><BR><div>回复1</div>
<reply/> <!-- 标记,新回复将出现的位置 -->
</div>
<div id="reply_form" >添加回复的表单
<FORM METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="name"><TEXTAREA NAME="comment" ROWS="" COLS=""></TEXTAREA>
<INPUT TYPE="bottom" value="提交" οnclick="ajax_reply(name.value,comment.value,23)">
</FORM>
</div>
</BODY>
</HTML>
********后台处理 reply_submit.asp*****
<%
reply="<span>"&Request.Form("name")&"</span><BR><div>"&Request.Form("comment")&"</div>"
b=server.mappath("/")
id=Request.Form("id")
'此处也可向数据库中添加记录
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set type1=fso.openTextFile(b&"/article"&id&".htm")
all=type1.readall
all=replace(all,"<reply/>",reply&"<reply/>") '处理原页面,加入新回复
Set type2=fso.createTextFile(b&"/article"&id&".htm")
type2.WriteLine all '重写页面
type2.close
Set fso=Nothing
response.write reply '回调给前台
%>
***********************************
演示页面: http://www.uptoday.cn/shtml/article1537.htm
在此页底部回复,暂不支持firefox