今天下午在公司写一个asp生成静态页面的方法,可能不是很好的办法,希望大家提出更好的方法。下面给出我的设计思路和关键代码......
到新公司的第一件事就是研究科讯的CMS(我是不喜欢这些东东的),经理让同事把问答系统写成静态的,跑来像我求救,
基本流程:用户前台提交问题——后台专家解答问题。
功能要求:用户点击首页每个问题进入生成的详细信息静态页面中,页面中两处需要调用数据库中的数据。
设计方法:如果用动态语言写非常简单,类似于留言本。网上的很多的都是伪静态的。因为公司没有自己的服务器,那只有在程序方面上下功夫了。思考之后,首先用户提交问题成功以后生成一个静态页面,在页面中用ajax去调用后台专家解答的答案。方法如下:
用户提交问题关键代码
Code
dim title,body
title=request.Form("title")
body=request.Form("body")
if title="" or body="" then
Response.write("0") '//返回0,代表填写不完整
else
Dim rs
Set rs=Server.CreateObject("Adodb.RecordSet")
rs.open "book",conn,3,3
rs.addnew
rs("username")=title
rs("content")=body
rs.update
response.write "<script>alert('发布成功!');history.go(-1);</Script>" '//返回1,发布成功
end if
'生成页面
Dim TypeLib,filename,fso,htmlwrite
Dim addsj
addsj=now()
'Set TypeLib = Server.CreateObject("Scriptlet.TypeLib")
filename=replace(replace(replace(addsj,"-",""),":","")," ","")&".shtml"
if request("body")<>"" then
set fso = Server.CreateObject("scripting.FileSystemObject")
set htmlwrite = fso.CreateTextFile(server.mappath("/html/"&filename&""))
htmlwrite.write "<script type=text/javascript src=../33.js>"
htmlwrite.write "</script>"
htmlwrite.write "<html><head><title>" & title & "</title></head>"
htmlwrite.write "<body onLoad=aa("&rs("Id")&")>提问: " & title & "<br /> 专家解答:" & body & "<div id=QianliList>"
htmlwrite.write "</div></ br><script language=javascript src=head.asp></script></body></html>"
htmlwrite.close
set fso=nothing
rs.close
Set rs=nothing
end if js调用答案代码:
Code
function aa(iid){ //获取指定页的曝客信息
var xhr=XHR();
var url="../GetRecord.asp?id="+iid+"&r="+Math.random();
xhr.open("GET",url,true);
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
if(xhr.status==200){
getObject("QianliList").innerHTML=unescape(xhr.responseText);
}
}
}
xhr.send(null);