轉貼-RESPONSE對象(2000.03.22)
RESPONSE對象
RESPONSE對象非常有用而且功能豐富。這里我們將要給大家介紹的是其最基本的功能。 當然它的所有功能比我們在這里所要介紹的多得多,但我們認為這里所要介紹的20%的 內容是你會在80%的時間中都會用到的。我們認為RESPONSE對象主要的功能如下:
# RESPONSE.WRITE # RESPONSE.WRITE也可以簡寫為<%=%>這樣的格式簡單的嵌入到HTML語言中 # RESPONSE.REDIRECT方法可以使瀏覽器嘗試連接到其他 URL # RESPONSE.END可以有效地終止一段腳本的繼續解析
RESPONSE對象第二部分——BUFFER控制 Response object error 'ASP 0156 : 80004005' Header Error whatever.asp, line # The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.
這樣的錯誤信息是否也同樣困擾過你? 不過只要你把"<%response.buffer=true%>”這一行加在任何一頁混合著REDIRECTS和 網頁內容的網頁的第一行,你就不會再看到這樣的錯誤了!這一行會解除瀏覽器發出: "HEADERS ARE ALREADY SENT”信息。
Buffer屬性指示是否緩沖頁輸出。也就是說添加這個屬性后頁面所有的信息會先放入 緩沖頁中,等到當前頁的所有服務器腳本處理完畢之后才向瀏覽器寫入。如果當瀏覽 器已經寫了一些什么內容之后,你就再也不能使用RESPONSE.REDIRECT了,因為瀏覽器 不能又寫內容又REDIRECTS(改變方向)。
<%response.buffer=true%>主要是告訴瀏覽器在一下事件發生之前不要寫入任何東西: a) response.end執行前 b) response.flush執行前 c) 當前頁的所有服務器腳本處理完畢之前 d) response.redirect命令已被發送,并且沒有任何內容通過response.flush被發送之前。
<%response.buffer=true%>的唯一缺點就是緩沖將在服務器未處理完當前頁的所有腳本之前 阻止在客戶端顯示響應。如果頁面要花一點時間來組織(比如從數據庫中提取上千條的記錄), 這樣在網頁沒有被完全提交給瀏覽器之前人們看不到任何信息,時間久了網頁看上去就似乎 是沒有響應了。為了避免這樣的情況,通常使用RESPONSE.FLUSH可以讓用戶看已經組織完成 的部分頁面內容。
RESPONSE對象第二部分——Redirect方法
Redirect 方法使瀏覽器嘗試連接到其他 URL,這個很類似于HTML中<meta refresh>的功能。 以下是這個方法的一個例子:
<html><head> <TITLE>FormJump.asp</TITLE> </head><body bgcolor="#FFFFFF"> <form action="FormJumpRespond.asp" method="get"> <SELECT NAME="wheretogo"> <OPTION SELECTED VALUE="fun">Fun</OPTION> <OPTION value="news">Daily News</OPTION> <OPTION value="docs">ASP IIS3 Roadmap/Docs</OPTION> <OPTION value="main">MainPage of ActiveServerPages.com</OPTION> <OPTION value="sample">IIS 3 Sample ASP scripts</OPTION> </SELECT> <input type=submit value="Choose Destination"> </form> </body></html>
The responder that reacts to this form is:
<%response.buffer=true%> <html><head> <title>formjumprespond.asp</title>& <body bgcolor="#FFFFFF"> <% ' My ASP program that redirects to URL thisURL="http://www.joyeasy.net/" where=Request.QueryString("Wheretogo") Select Case where case "main" response.redirect thisURL & "/" case "samples" response.redirect thisURL & "/aspsamp/samples/samples.htm" case "docs" response.redirect thisURL & "/iasdocs/aspdocs/roadmap.asp" case "news" response.redirect "http://www.sina.com" case "fun" response.redirect "http://www.nease.com" End Select response.write "All dressed up and I don't know where to go<br>" response.write "I recommend --> " & "<br>" response.write server.htmlencode(thisURL & "/learn/test/res2.asp?where=fun") & "<br>" response.write "for a good laugh!" & "<P>" %> </body></html> ======================================================================轉貼-如何利用ASP實現郵箱訪問(2000.03.21)
如何利用ASP實現郵箱訪問
您在訪問網站時是否會在有些頁面上見到這種功能---您在可以訪問此網站的同時, 還可以查看您免費郵箱中是否有新郵件。這個功能是不是讓您覺得很心動、很神秘呢? 下面,我就用ASP來舉個例子讓您知道是如何實現這一功能的。
首先你可以去一些提供免費郵件服務的站點,申請一個賬號然后登錄。在打開郵箱時, 請您注意地址欄中的內容。現在以371為例,你會發現其內容通常是: http://www.371.net/prog/login?user=fighter&pass=mypassword。 其中"fighter"是您的賬號,"mypassword"是您的密碼。這時我們可以從這里得到3個信息。 第1條是我們得到了處理文件的url及文件名:"http://www.371.net/prog/login"; 第2條是記錄您賬號的變量名:user;第3條是記錄您密碼的變量名:pass。 我們知道這些信息后,就可著手寫html文件和asp文件了。
'/*Html源文件內容如下:*/ <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <title>City Club 首頁</title> <style type="text/css"> <!-- td { font-size: 9pt} body { font-size: 9pt} select { font-size: 9pt} A {text-decoration: none; color: #003366; font-size: 9pt} A:hover {text-decoration: underline; color: #FF0000; font-size: 9pt} --> </style> <script language="javascript"> function check(tt) { if (window.document.form1.selectmail.selectedIndex==0) { alert("請選擇您的郵箱服務器!") window.document.form1.selectmail.focus() return false } if (tt.account.value=="") { alert("帳號不能為空!請填寫。") tt.account.focus() return false } if (tt.account.value.length<3) { alert("帳號長度不能小于3位!請填寫。") tt.account.focus() return false } if (tt.password.value=="") { alert("密碼不能為空!請填寫。") tt.password.focus() return false } if (tt.password.value.length<3) { alert("密碼長度不能小于3位!請填寫。") tt.password.focus() return false } else return true } </script> <BODY topmargin=12> <table border=0 bgcolor=d3d3d3> <td> <form action="PostOffice.asp" method=post Onsubmit="return check(this)" name=form1 target="_blank"> <!--此處用target="_blank",是為了彈出新窗口來查看您的郵箱--> <select style="font-size:9pt;background-color:add8e6" name="selectmail"> <option name="mailsite" value="City Club便民郵局" selected>City Club便民郵局</option> <option name='MailSite' value='990.net/prog/login?;user;pass;'>990</option> <option name='MailSite' value='www.371.net/prog/login?;user;pass;'>371</option> <option name='MailSite' value='www.188.net/prog/login?;user;pass;'>188</option> <option name='MailSite' value='web.163.net/cgi/login?;user;pass;'>163</option> <option name='MailSite' value='freemail.263.net/cgi/login?;user;pass;'>263</option> <option name='MailSite' value='mail.777.net.cn/v2.0/html/mailbox.php3?;user;pass;'>777</option> <option name='MailSite' value='www.126.com/cgi/login?;email;password;'>126</option> <option name='MailSite' value='www.2911.net/cgi-bin/login?;username;password;'>2911</option> <option name='MailSite' value='hotmail.yn.cninfo.net/prog/login?;user;pass;'>云南169</option> <option name='MailSite' value='freemail.china.com/prog/login?;user;pass;'>china</option> <option name='MailSite' value='freemail.hongkong.com/prog/login?;user;pass;'>香港免費電郵</option> <option name='MailSite' value='freemail.netease.com/prog/login?;user;pass;'>Netease</option> <option name='MailSite' value='lc3.law5.hotmail.com/cgi-bin/dologin?;login;passwd;'>hotmail</option> <option name='MailSite' value='www.netaddress.com/tpl/Door/login?;UserID;passwd;'>use.net</option> <option name='MailSite' value='www.88998.com/cgi-win/login?;username;password;'>88998.com</option> <option name='MailSite' value='www.mail.com/mailcom/login.jhtml?;mn;pw;'>@mail.com</option> </select><br> 帳號:<input type=text name=account size=12 style="font-size:9pt"><br> 密碼:<input type=password name=password size=12 style="font-size:9pt"><br> </td><tr><td align=center><input type=submit value="收信" style="font-size:9pt"> <input type=reset value="重填" style="font-size:9pt"> </td> </form> </td> </table> </BODY> </HTML> '/*Html源文件內容結束*/
'/*PostOffice.asp源文件內容如下:*/ <%@ Language=VBScript %> <% Response.Buffer = true '---------------------------------------------------- 'Author : Peter.yu 'Created Date : 2000/3/13 'File Name : PostOffice.asp 'All Rights Reserved.所有權歸City Club '---------------------------------------------------- %> <HTML> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </HEAD> <title>City Club 便民郵局 (All Rights Reserved所有權歸City Club)</title> <BODY> <% dim str(3) str1 =trim(Request.Form("selectmail")) '/*獲取的郵件服務器及用戶賬號和密碼信息*/ for i = 1 to 3 '/*將以上獲取的信息進行分割,并賦予給數組變量*/ p = instr(1,str1,";") str(i-1) = mid(str1,1,p-1) str1 = mid(str1,p+1) next if instr(1,str(0),"http://")=0 then webSiteUrl = "http://" & str(0) else webSiteURL = str(0) '/*郵件服務器地址及指定處理的文件名*/ end if usernam = str(1) '/*賬號變量名*/ password = str(2) '/*密碼變更名*/ '/*合并字符,得到諸如"http://www.371.net/prog/login?user=fighter&pass=mypassword的字符"*/ mailUrl = webSiteUrl & usernam & "=" & trim(Request.Form("account")) mailUrl = mailUrl & chr(38) & password & "=" & trim(Request.Form("password")) Response.Redirect mailUrl '/*打開郵箱*/ %> </BODY> </HTML>
'/*PostOffice.asp源文件內容結束*/
不是很難吧,呵呵。其實這個不是很難的,關鍵在于您能多多觀察,找出其中的規律。 這樣我們就可以利用這些規律做很多很多有意義有趣的事了。 ================================================= 轉貼-避免重復定義數組(2000.03.20) 當我們在使用dim時,避免重新定義數組。因為你可能要用redim去重新定義數 組的大小。至于要做這樣的操作的話,如果你的機器內存不是很大,那么最好在 一開始就考慮到最壞的打算去設置數組的長度或者設置最佳狀態時的長度,在非 常必要時才使用redim。當然這樣并不意味著要去增加內存,如果你不是很需要的 話。
以下舉例說明不恰當的使用redim <% dim MyArray() Redim MyArrray(2) MyArray(0) = "hello" MyArray(1) = "good-bye" . . . some other code where you end up needing more space happens then ... Redim Preserve MyArray(5) MyArray(2) = "more stuff" MyArray(3) = "even more stuff" MyArray(4) = "yet more stuff" %> 其實在開始就定義myarray(5),而以后需要的話再用redim去增加他的大小, 這樣的話可能會占用一些內存,但速度就要快得多了。
|