国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

ASP 3.0高級編程(三十二)_ASP教程

2024-05-04 11:03:56
字體:
來源:轉載
供稿:網友

推薦:asp控制xml數據庫的6段非常的經典代碼
NO.1--建立一個XML數據庫data.xml <?xml version="1.0"?><records><record><name>caca</name><qq>1

7.2.4 客戶端腳本錯誤
到目前為止,我們已了解了來自ASP的錯誤。然而ASP也經常用于創建包含客戶端腳本的網頁。如果包含客戶端代碼的<SCRIPT>元素沒有被設置成RUNAT="SERVER"屬性,ASP將不考慮服務器,而把網頁信息不加改變地傳送到客戶端。
因此,如果打開了一個ASP網頁,并且顯示的是一個瀏覽器錯誤對話框,就不應該在服務器端尋找ASP程序代碼的錯誤。瀏覽器看不到ASP程序代碼,所以不能識別任何錯誤,如果有一個對話框出現在客戶端,那么在客戶端代碼中必定有一個錯誤。
1. 語法錯誤
如果在網頁中的客戶端程序代碼有語法錯誤的話,當腳本下載到客戶端,瀏覽器便會出現相應的錯誤。盡管網頁中內容仍可正常載入(除非由這些客戶端腳本代碼動態裝入),但網頁停止執行。用戶將看到一個包含錯誤細節的對話框,或者是一個指示網頁包含錯誤的狀態條消息。
現代瀏覽器趨向于隱藏網頁腳本錯誤的細節,而僅在狀態條上顯示一個小的錯誤圖標。在IE 4.0和IE 5.0中,正常的錯誤對話框可以通過Internet Options對話框的Advanced頁進行設置來激活,如圖7-14所示:

圖7-14 Advanced頁面設置屏幕
處理腳本程序代碼中的客戶端錯誤和在服務器端相似,并且通常會更容易些,因為經常可以直接從服務器目錄中通過雙擊來下載網頁。一般不需要通過Web服務器和HTTP獲得網頁來觀察瀏覽器中的結果,其中的唯一不同是一些服務器交互由客戶端腳本來完成,如使用RDS的數據綁定或者動態裝入。
2. 運行期或語義錯誤
在客戶端腳本中,通常可能會遇到語法錯誤,也會經常遇到運行期或語義錯誤。事實上,在客戶端,這種現象是很普遍的。因為在客戶端不能像服務器端那樣對腳本的環境進行控制,不能肯定用戶在他們的機器上正運行什么,實際上在服務器上僅能從一些組件如Browser Capabilities中得到大概情況。
所以,使用客戶端對象或特殊版本的腳本語言和屬性的腳本程序很可能不能正常工作。盡管如此,處理客戶端錯誤和處理服務器端錯誤是差不多的。
3. 在服務器上創建的客戶端程序代碼
在錯誤發生時,作為“客戶端對話框對應于ASP錯誤頁面”規則(關于出錯的地方)的一個特別的例外是,使用ASP程序代碼在服務器上動態地創建客戶端程序代碼。例如,可能想在ASP中進行求值運算,然后把數據傳給運行在客戶端的腳本代碼,可能最容易的方法是把數據作為一個變量插入腳本代碼中:
<%
' get the name of our server from the ServerVariables collection
strServerNameInASP = Request.ServerVariables("SERVER_NAME")
%>

<SCRIPT LANGUAGE="JScript" RUNAT="CLIENT">
<!-- hide code from older browsers
var strServerName = "<% = strServerNameInASP %>";

alert('Server name is: ' strServerName);

// stop hiding code
-->
</SCRIPT>
在客戶端,在ASP處理這個頁面之后,將得到的是:
<SCRIPT LANGUAGE="JScript" RUNAT="CLIENT">
<!-- hide code from older browsers
var strServerName = "WROXBOX";

alert('Server name is: ' strServerName);

// stop hiding code
-->
</SCRIPT>
可以忽略RUNAT="CLIENT"屬性,但是加上這一項可以使得在查看運行代碼的ASP網頁時更加清楚。
這樣,如果在某個位置想把服務器端數據庫中的數據加入到一個客戶端數組中,可以采用下面的程序實現:
<SCRIPT LANGUAGE="JScript" RUNAT="CLIENT">
<!-- hide code from older browsers
var arrBooks = new Array(10) //highest available index will be

<% ' start of ASP processing
intIndex = 0
Do While { not at the end of some recordset }
strTitle = { get title from database record }
Response.Write "arrBooks[" & CInt(intIndex) & "] = '" _
& strTitle & "'; " & vbCrlf
intIndex = intIndex 1
{ move to next record in database }
Loop

do something here on the client with the array of book titles

// stop hiding code
-->
</SCRIPT>
這段服務器端ASP程序代碼產生的客戶端代碼,在客戶端運行時創建書名標題數組。同時產生的客戶端腳本錯誤出現在瀏覽器的錯誤對話框中。錯誤的原因是以arrBooks命名的數組是由JavaScript代碼運行在客戶端時創建的,僅能接受9個書名;而服務器端代碼能很可能產生多于9個的書名,具體多少由源數據庫中的記錄數來決定。這相當于如下客戶端代碼:
<SCRIPT LANGUAGE="JScript" RUNAT="CLIENT">
<!-- hide code from older browsers
var arrBooks = new Array(10) //highest available index will be
arrBooks[0] = 'Instant JavaScript';
arrBooks[1] = 'Professional ASP 3.0 Programming';
arrBooks[2] = 'ADO 2.5 Programmers Reference';

etc

arrBooks[9] = 'ASP Techniques for Webmasters';
arrBooks[10] = 'ASP Programmers Reference'; // <- client-side error occurs here
arrBooks[11] = 'ADSI CDO Programming';
arrBooks[12] = 'Professional MTS and MSMQ Programming';

do something here on the client with the array of book titles

// stop hiding code
-->
</SCRIPT>
這個頁面只有經過修正之后才能正常工作,可以通過增加數組大小,也可以通過控制來自數據庫的記錄數使其正常工作。

7.3 防止錯誤
上面已經看到了能夠出現的一些不同類型的錯誤,并且有了一些查找錯誤的感覺。下面將考慮如何避免把錯誤引入程序中,盡管不能保證所編寫的程序沒有錯誤,但是這里概括的許多技術

分享:將ASP動態網頁轉換成HTM靜態頁面的方法
前段時間有個asp頁面執行起來很慢,訪問人數又頗多,而且又不經常修改,又懶得直接做成靜態的,每次都要從服務器下載來改,只好想辦法把asp頁面轉化成htm靜態頁面了。以前就曾經看到這樣的文

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乡宁县| 桃园县| 仪征市| 阳朔县| 佛教| 曲周县| 大渡口区| 河南省| 盱眙县| 日喀则市| 安陆市| 武冈市| 拉萨市| 双鸭山市| 海安县| 松滋市| 镇赉县| 洱源县| 汶川县| 山阳县| 桂东县| 宕昌县| 平安县| 潞西市| 太原市| 开平市| 普定县| 壶关县| 仁寿县| 富川| 昆山市| 乐昌市| 马鞍山市| 南溪县| 天长市| 安吉县| 台东市| 金寨县| 噶尔县| 元氏县| 文登市|