asp中的<script runat=server>和<% %>的區別

 我看到爲什麼有些在服務器端運行language=vbscript byte,2007-10-22 11:45:43
<script language=vbscript runat=server>
'這裏是代碼,如:
response.write "88888888<br>"
</script>
我看到爲什麼有的ASP文件中要這樣寫呢,爲什麼不直接用下面的更方便嗎?
<%
'這裏是代碼,如:
response.write "88888888<br>"
%>
請教這二者有什麼區別嗎?


Xinsoft,2007-10-22 11:50:00
1、<% ... %> 這種寫法相當於 <script runat=server> ... </script>
2、<% ... %> 支持的語言是VBScript還是JScript,取決於 IIS 的默認腳本語言設置。通常這個設置的默認值是VBScript。
3、無論是<% ... %> 這種寫法,還是 <script runat=server ...> ... </script> 都可以指定使用何種語言。


byte,2007-10-22 18:04:28
按照你的意思,那是寫法不同,但功能是一樣的,但是下面的語句:
複製代碼

  1. <script language="vbscript" runat="server">  
  2. response.write "1"  
  3. </script>
  4. <%response.write "2"%>


輸出的是21,而不是12,請問這又是爲什麼?


ByVal,2007-10-22 18:22:56
因爲在最終編譯階段,script標籤的優先級最低,當所有流程處理完畢,已經準備好回發流時才處理它,如果你要在它的範圍內使用response.write向回發流增加數據,必定會排在最後,因爲回發流已經建立


風Na,2007-10-22 19:16:43
呵呵,如果你用下面這段代碼呢?

複製代碼
  1.  
  2. <script language="Jscript" runat="server">  
  3. response.write("1"); 
  4.  </script>  
  5. <%response.write "2"%>  
  6.  


風Na,2007-10-22 19:18:05
服務器腳本的執行順序是
採用非缺省語言的<SCRIPT>單元腳本  
內聯腳本  
採用缺省語言的<SCRIPT>單元腳本
摘自http://topic.csdn.net/t/20020820/20/956643.html


ByVal,2007-10-22 19:18:28

這就是解釋引擎間的差別體現了


ByVal,2007-10-22 19:19:39
以上的順序在很大程度上依賴於ActiveX語言引擎的載入順序,同時IIS中的ASP處理程序可能在將來會有所改變,因此,我們很不希望你按照這個順序進行工作,不管你是隻把<SCRIPT>單元用於函數或者子程序,還是把它僅僅用於執行順序無關緊要的編碼。


風Na,2007-10-22 19:23:18

呵呵,還是.Net處理<% %>和<script>比較科學。。。


ByVal,2007-10-22 19:35:42
一個是解釋的,一個是編譯的.區別就在這裏了


daniel_daniel,2007-10-23 10:19:37
長學問了。好貼,好人,好問題

測試代碼如下:
<%=4%>
<%Response.Write(5)%>
<script language="jscript" runat="server">Response.Write(1)</script>
<script language="vbscript" runat="server">Response.Write(2)</script>
<script language="jscript" runat="server">Response.Write(3)</script>

當在前面用<% @LANGUAGE="VBSCRIPT" %>或不用的時候,就是讓面用默認script為vbscript,輸出順序為13452
當在前面用<% @LANGUAGE="JSCRIPT" %>的時候,就是讓面用默認script為Jscript,輸出順序為24513

總結 - asp在運行時候對tag的處理順序:
1.先執行非默認script的script tag內語句(@language="vbscript"時,先執行<script langauge=javascript runat=server,反之亦然)
2.再執行percent tag內語句
3.最後執行使用默認script的script tag內語句(@language="vbscript"時,執行<script langauge=vbscript runat=server,反之亦然)
=直接輸出不影響順序
微軟的產品怪怪的啊~歡迎交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章