我看到为什么有些在服务器端运行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,反之亦然)
=直接輸出不影響順序
微軟的產品怪怪的啊~歡迎交流