看来只有我能回答你了,老鸟看见都笑着走开了~~
asp动态页,html是静态页,
想把asp变成html,就把里头所有<%%>删除,就ok~~~
其实这样没有实际意义,说了等于白说...
你的意思是想动态生成html吗?
用js的 document.writeln("");可以灵活的动态生成html
[此贴子已经被作者于2007-11-9 14:09:52编辑过]
这个是加在哪里边呢?每个页面里边吗?
对于那个路径,是不是写了首页地址,其他页面也会变成HTML后缀的呢?
[CODE]以下代码就是将一个ASP的动态页面生成一个HTML的静态页面,注释我已经加上了,自己看吧。
FileName = "Index"&Item_Classid&".htm"
FilePath = Server.MapPath("/")&"\"&FileName
Html_Temp = Html_Temp&FilePath&"< >"
以上代码是在建立最终生成静态文件的名称和路径。
Do_Url = "http://"
Do_Url = Do_Url&Request.ServerVariables("SERVER_NAME")&"/detail.asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid
strUrl = Do_Url
以上代码是通过拼写Do_Url字符串来获得你所传递过来的文件路径和参数,并最终附值到strUrl变量中。
dim objXmlHttp
set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
以上这段代码是在通过你所传递过来的strUrl解析该页面中的HTML代码;关键是这句(objXmlHttp.open "GET",strUrl,false )。
Dim binFileData
binFileData = objXmlHttp.responseBody
以上代码是将解析好的HTML代码附到binFileData中
Dim objAdoStream
set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()
以上这段代码是建立一个文件对象,将所拥有HTML代码的变量binFileData写到该文件中。
Html_Temp = Html_Temp&"<UL>"
Response.Write Html_Temp
Response.Write ( "<BR>" )
Response.Write ( "成功生成文件:" )
以上几句就不用我解释了。。。。:)
其实上面这个做法并不是很科学,还可以将代码更完善些。建议你将这个步骤封装到两个FUNCTION中,这样比较清晰并且方便重复调用,
CreateFile:用于建立生成的静态文件,其中调用GetUrlText进行脚本解析。
Function CreateFile(fileName,url)
Dim fs,fname
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fname = fs.CreateTextFile(FileName, True)
fname.Write GetUrlText(url)
fname.Close
Set fname = Nothing
Set fs = Nothing
End Function
GetUrlText:用语解析传递回来的ASP页面
Function GetUrlText(url)
Dim xmlHttp
Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")
xmlHttp.setTimeouts 10000,10000,10000,30000
xmlHttp.Open "GET",url, False
xmlhttp.setRequestHeader "CONTENT-TYPE", "text/xml"
xmlHttp.Send
If xmlHttp.ReadyState = 4 Then
GetUrlText = xmlHttp.responseText
Else
GetUrlText = ""
End If
End Function
里面URL就是你传递过来的地址,而FileName就是生成文件的地址,你在调用时直接调用CreateFile,将FileName和URL传递过去就可以了,怎么样,是不是比上面的看起来清晰很多:)[/CODE]
我昨天找到的,但是放在funtion里边调用又要报错
不知道怎么用的
[CODE]<%
Function CreateFile(fileName,url)
Dim fs,fname
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fname =fs.CreateTextFile(FileName,True)
fname.Write GetUrlText(url)
fname.Close
Set fname = Nothing
Set fs = Nothing
End Function
Function GetUrlText(url)
Dim xmlHttp
Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")
'xmlHttp.setTimeouts 10000,10000,10000,30000
xmlHttp.Open "GET",url,False
'xmlhttp.setRequestHeader "CONTENT-TYPE", "text/xml"
xmlHttp.Send
If xmlHttp.ReadyState = 4 Then
GetUrlText = xmlHttp.responseText
Else
GetUrlText = ""
End If
End Function
Dim Url
CreateFile Server.MapPath("index.html"),"http://localhost/CeShi/aspnet/index.asp"
response.Redirect "index.html"
%>
[/CODE]
把这个贴在index.asp中,可以生成index.html,但是页面没有数据
可能是这Set xmlHttp = server.createobject("MSXML2.ServerXMLHTTP")错了吧
怎么改呢?