亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

解析ASP中腳本執行順序_ASP教程

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

推薦:如何使ASP分頁和日期格式化為RFC822格式
計算分頁,嘿嘿一次搞定不用判斷 以下為引用的內容:intNumPage = Abs(Int(-(intNumRecord/intPerPage))) 將日期格式

如果機房馬上要關門了,或者你急著要和MM約會,請直接跳到第四個自然段。

以下敘述的腳本包括服務器端腳本和客戶端的腳本,服務器端腳本指在服務器上運行的那部分腳本,比如常見的Response.Write顯然是在服務器上運行的,服務器端腳本可以使用VBScript和JScript語言書寫,在本文中全部使用VBScript,Jscript一個道理。

客戶端腳本也可以認為包括VBScript和JavaScript兩種語言,是在客戶端瀏覽器上運行的腳本語言。比如我們訪問一個網頁,彈出一個消息框,這個就是用客戶端腳本做的(alert, msgbox, etc),而且顯然不是服務器端腳本能做到的??蛻舳四_本與服務器端腳本還有一個很大的區別(在IE、Firefox等瀏覽器中),就是客戶端的腳本可以訪問文檔對象模型(DOM),可以操作頁面中的對象(比如修改頁面標題、修改一個div的innerHTML屬性之類)。

首先我們先來了解一下ASP頁面執行的流程

1.IIS找到ASP文件,提交給ASP引擎(一般是ASP.DLL)處理。

2.引擎打開這個ASP文件,找出<%和%>之間的內容,當然還有<script runAt="server">和對應的</script>之間的內容,這些內容稱為腳本塊。只有腳本塊里的內容被引擎解析,其他內容不管,作為沒有意義的字符插在腳本塊之間。有必要說明一下的是,其實被解析的內容還不止這些,<!--#include ***-->類的服務器端包含文件也是由引擎包含進來并加以處理的。如果你讀的程序比較多,你還會知道有的runAt屬性標注為"Server"的<object>對象也是會被處理的,這里不做深入討論。

3.引擎執行腳本塊中的腳本,這些服務器端的腳本是作為一個整體被執行的,也就是說,可以寫出如下的代碼:

以下為引用的內容:

<%
Dim i
For i=1 to 5
%> Hello World!
<% Next %>

引擎并不會將這些腳本塊分開解析,而使兩個腳本塊都發生語法錯誤。所以我們得到如下結論:并非所有非服務器腳本的代碼都會被發送到客戶端,有可能這段非服務器腳本的代碼被腳本塊限制了。服務器是一定不會操心客戶端腳本的執行問題的,但是可以通過服務器端的腳本輸出不同的客戶端腳本。

4.最終引擎產生了一個文本流,或者說是腳本的執行結果,可以認為這是一個字符串,就是發送到客戶端瀏覽器的網頁的代碼??蛻舳藶g覽器將頁面顯示出來,此時頁面的源代碼(源文件)是不包含服務器端的腳本的,但包含了服務器端腳本的執行結果(這是顯然的)。

<% … %> 與 <script runat="server">…</script>

它們都是服務器端的腳本,同時被處理執行。他們執行時是作為一個整體的。

<% … %> 與 <script language="…">…</script>

前者是服務器端腳本,后者是客戶端腳本。前者先執行,后者后執行。
其實也不盡然,二者的腳本是有可能在同時被執行的,但空間不同,仍然是:前者在服務器上執行,后者在客戶端瀏覽器里執行。前者在邏輯上一定提前于后者執行。同時我們也得到結論:在同一個頁面的執行中,客戶端腳本無論如何不能反饋給服務器端腳本,也就是說,客戶端瀏覽你的留言本并且提交新留言或者是任何客戶端腳本獲取的值都不可能在同一次服務器響應中被處理。

關于組件的調用
注意服務器端腳本和客戶端腳本都是腳本,自然都可以創建xmlhttp組件、ADODB.Connection組件等,但是并不是放在哪里都可以的。

xmlhttp如果用于服務器的抓取網頁(比如采集)就要在服務器腳本里創建了,而如果是用于客戶端的ajax無刷新而后臺訪問服務器端的頁面,那么就是運行于客戶端的了,自然在客戶端創建。


ADODB.Connection組件用于訪問數據庫,一般來說在服務器端創建,畢竟是服務器端的asp程序在跑數據庫的數據,但如果你的數據庫真的是在客戶端連接的(比如這個http://bbs.bccn.net/thread-224966-1-2.html),那么就毫無疑問在客戶端腳本里創建了。
總之,矛盾著的事物及其每一個側面各有其特點。不同事物有不同的矛盾;同一事物在發展的不同過程和不同階段上有不同的矛盾;同一事物中的不同矛盾、同一矛盾的兩個不同方面各有其特殊性(看不懂的可以略去不看……)。這一原理要求我們堅持具體問題具體分析原則,在矛盾普遍性原理的指導下,具體分析矛盾的特殊性,并找出解決矛盾的正確方法。反對千篇一律地采用一種方法解決不同事物的矛盾。“一把鑰匙開一把鎖,到什么山唱什么歌”講的就是這個道理。

 

服務器端VBScript腳本創建對象使用Server.CreateObject(className)方法,客戶端VBScript腳本創建對象使用CreateObject(className)方法。

典型錯誤

以下為引用的內容:

<%
Function TSize(b)
'這是我自定義的函數
TSize="中國"
end function
%>
<a href="javascript:<%TSize('變量')%>" >點這里要使用我定義的函數</a>
(http://bbs.bccn.net/thread-225244-1-1.html)

錯誤分析:

混淆了服務器端腳本和客戶端腳本的區別。實際執行時我們會發現,客戶端根本沒有收到什么TSize之類的代碼,因為TSize是服務器端的程序,被引擎處理之后(注意引擎對于函數的處理,純粹是給服務器端腳本調用的,不會發回到客戶端)就消失了,不可能在客戶端起作用。這就是說,客戶端腳本無法直接調用服務器端腳本的函數。

事實上,這個程序是有語法錯誤的,引擎處理這段內容的時候先找到了<%和%>之間的內容,也就是<%TSize('變量')%>,顯然這段內容不符合VBScript的語法規則。嗯,改成<%=TSize("變量")%>在服務器端腳本就沒有語法錯誤了,這時TSize函數可以正常返回值"中國",于是客戶端收到的href屬性是這樣寫的:"javascript:中國",是無法執行的。

服務器端腳本對客戶端腳本的影響
前面已經說過了,服務器端腳本在邏輯上是提前于客戶端腳本的執行的,因此這樣的代碼是可行的:

以下為引用的內容:

<%
Dim i
For i=1 to 5
Response.Write "<script type=""text/javascript"">" _
& "alert('Hello World!" & i & "')</script>"
Next
%>

關于Response.Redirect與javascript的執行問題
注意以下代碼的寫法是錯誤的:
<%
Response.Redirect "index.asp"
Response.Write "<script type=""text/javascript"">" _
& "alert('密碼錯誤!')</script>"
%>

這是一種常見的錯誤,編寫者常常以為,這樣寫代碼可以使客戶端先彈出“密碼錯誤”的提示然后轉向到index.asp,事實上這不可能發生,即使將兩行代碼順序交換,也不可能達到這種效果。

究其原因,和服務器對于兩行代碼的處理方式有關。這兩行代碼不可能同時起作用。

Response.Write是向客戶端發送一段文本,這段文本的內容可以是一段腳本,那么客戶端瀏覽器收到后可以執行這段腳本,注意,要收到之后才能執行。

而Response.Redirect是向客戶端發送了一個HTTP頭信息(什么是HTTP頭信息?這么說吧,比如對客戶端Cookies的寫入是HTTP頭信息,HTTP頭信息在HTTP的主體之前發回客戶端瀏覽器,這就是為什么有時我們把服務器的緩沖關閉之后修改Cookies會出錯的原因,因為主體已經開始傳送,不允許發送HTTP頭信息了。),信息的內容告訴客戶端瀏覽器應該跳轉頁面瀏覽,注意,這個Redirect信息是立刻起作用的,也就是說這個Redirect信息具有排他性,在緩沖打開的情況下,無論已經使用Response.Write向緩沖里寫入了多少內容,一旦調用Response.Redirect,將會清空緩沖,并且向客戶端瀏覽器發送這個頭指令。如果動態跟蹤一下程序的執行,我們還會發現,在調用了Response.Redirect之后,程序停止執行了,所以注意服務器端程序在調用Response.Redirect之前要做好數據連接的關閉等操作。

那么上面的例子應該怎樣修改呢?如果你不愿意修改那個index.asp以加入腳本提示的話,那么只能將轉向指令放到客戶端腳本中執行,就像這樣:

以下為引用的內容:

<%
Response.Write "<script type=""text/javascript"">" _
& "alert('!');location.href='index.asp'</script>"
%>

分享:ASP 3.0高級編程(三十三)
7.4.2 VBScript錯誤處理在VBScript中,可以使腳本解釋器不處理其找到的任何錯誤,并且使用On Error Resume Next語句繼續運行下個語句。一旦這個語句已被處理,腳本引擎將繼續運行后面的程序,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久二区二区| 欧美激情久久久久| 成人网页在线免费观看| 亚洲人成在线免费观看| 久久国产精品久久久久久久久久| 亚洲 日韩 国产第一| 大荫蒂欧美视频另类xxxx| 日韩欧美中文第一页| 国产精品劲爆视频| 国产一区二区三区视频| 日韩激情片免费| 国内精品中文字幕| 色综合亚洲精品激情狠狠| 亚洲欧美福利视频| 一本色道久久88综合亚洲精品ⅰ| 欧美劲爆第一页| 欧美在线视频在线播放完整版免费观看| 中文字幕一区二区三区电影| 国产精品久久国产精品99gif| 久久久精品一区二区| 国产精品久久久久久亚洲影视| 成人女保姆的销魂服务| 欧美日韩一区二区免费在线观看| 欧美在线日韩在线| 久久国产精品网站| 国语自产精品视频在线看| 欧美在线一区二区三区四| 午夜精品久久久久久久99黑人| 国产精品成人va在线观看| 成人在线中文字幕| 国产999精品久久久影片官网| 97超级碰碰人国产在线观看| 国产成人精品国内自产拍免费看| 午夜伦理精品一区| 久久国产加勒比精品无码| 国产香蕉精品视频一区二区三区| 色婷婷av一区二区三区久久| 国产精品免费久久久久久| 日韩av中文字幕在线| 日韩小视频在线观看| 在线免费观看羞羞视频一区二区| 亚洲欧美中文字幕在线一区| 国产亚洲视频在线| 久久九九亚洲综合| 国产成人免费av| 国产日韩综合一区二区性色av| 久久99精品久久久久久青青91| 欧美大码xxxx| 欧美在线影院在线视频| 久久久久久久影院| 亚洲精品日韩欧美| 亚洲精品欧美日韩专区| 国产亚洲视频中文字幕视频| 亚洲欧美综合区自拍另类| 国产亚洲一区精品| 亚洲视频电影图片偷拍一区| 26uuu日韩精品一区二区| 成人福利网站在线观看| 精品精品国产国产自在线| 欧美色xxxx| 91欧美日韩一区| 日韩电影免费在线观看| 日本亚洲欧美三级| 亚洲а∨天堂久久精品喷水| 精品日本美女福利在线观看| 欧美中文字幕视频| 久久精品国产免费观看| 98精品国产自产在线观看| 亚洲mm色国产网站| 国产精品久久中文| 欧美激情在线视频二区| 亚洲大胆人体av| 国产精品私拍pans大尺度在线| 欧美疯狂做受xxxx高潮| 国产亚洲美女精品久久久| 久久影视三级福利片| 日韩中文理论片| 欧美综合第一页| 久久久精品在线观看| 欧美福利小视频| 亚洲综合小说区| 国产精品免费观看在线| 51久久精品夜色国产麻豆| 国产日韩专区在线| 国产亚洲精品综合一区91| 久久夜精品va视频免费观看| 欧美日韩国产中文精品字幕自在自线| 97精品欧美一区二区三区| 亚洲成人久久久| 成人www视频在线观看| 精品av在线播放| 久久久久久久亚洲精品| 久久久www成人免费精品| 欧美成人自拍视频| 国产精品久久久久影院日本| 国产精品视频精品视频| 午夜精品一区二区三区在线视| 国产精品女主播| 97国产精品免费视频| 欧美成人合集magnet| 精品久久久久久久久久久久久久| 亚洲国产日韩欧美在线动漫| 欧美激情2020午夜免费观看| 欧美成人午夜影院| 久久夜色精品亚洲噜噜国产mv| 日韩精品视频在线播放| 91香蕉嫩草神马影院在线观看| 538国产精品一区二区免费视频| 久久精品99无色码中文字幕| 91视频-88av| 在线观看精品自拍私拍| 日韩av在线电影网| 欧美国产第二页| 国产日韩换脸av一区在线观看| 国产精品99久久久久久久久久久久| 日韩欧美亚洲综合| 国产拍精品一二三| 欧美日韩第一视频| 欧美主播福利视频| 日韩欧美第一页| 亚洲精品日韩久久久| 欧美成人在线影院| 久久精品国产久精国产一老狼| 久久久久久91| 亚洲人成网站999久久久综合| 91av视频导航| 国产mv久久久| 成人国产精品久久久久久亚洲| 欧美高清videos高潮hd| 久久久999精品视频| 国产精品白嫩初高中害羞小美女| 日本中文字幕不卡免费| 91精品国产综合久久香蕉922| 亚洲xxxx在线| 欧美自拍视频在线| 青青青国产精品一区二区| 日韩欧美极品在线观看| 欧美性猛交xxxxx免费看| 久久在精品线影院精品国产| 亚洲午夜色婷婷在线| 亚洲欧美日本另类| 国产成人精品一区二区三区| 国产精品偷伦免费视频观看的| 国产精品在线看| 久久夜色撩人精品| 在线看日韩欧美| 91网站免费观看| 亚洲影院高清在线| 久久久久久91香蕉国产| 日本高清不卡在线| 久久视频这里只有精品| 国产精品扒开腿做爽爽爽男男| 91大神福利视频在线| 国产精品99久久久久久人| 久热精品在线视频| 欧美电影在线观看高清| 精品国产91久久久久久| 午夜精品福利在线观看| 欧美激情在线观看| 国内精品久久影院| 日韩毛片在线观看| 精品福利在线看| 亚洲高清av在线| 国产成人jvid在线播放|