2012-05-12 23 views
1

自從我與經典asp合作以來,我已經有一段時間了,我正在完成關於可變範圍的大腦褪色。經典ASP可變範圍 - 我想我已經失去了主意

我在這裏做錯了什麼?

<SCRIPT LANGUAGE=vbscript RUNAT=Server> 
dim test 
test = "Test it" 

function testAsp() 
    testasp = "Should be a result here " & test 
end function 
</SCRIPT> 

<html> 
<body> 
<% 
    response.write(testAsp()) 
%> 
</body> 
</html> 

如果我移動塊內的聲明一切都很好。運行服務器2008 R2,IIS 7.5。有什麼改變嗎?或者是我?

+0

請標記答案爲接受,如果它通過勾選下面的空白V圖標解決您的情況它的得分和箭頭。另外,一般來說,除非你明確地需要不同的東西,否則總是隻使用'<%' and '%>',我懷疑你是否真的需要它。 –

回答

4

將您的<SCRIPT LANGUAGE=vbscript RUNAT=Server>更改爲<%,將您的</SCRIPT>更改爲%>,您應該很好。

您將被腳本引擎在傳統的ASP生命週期中執行的順序所捕獲。這很令人困惑,但<SCRIPT />塊將在<% %>塊之後執行,即使它按照源的順序排在第一位。我不能輕易解釋爲什麼函數在<% %>塊中定義,但我期望它與函數提升有關。

爲了進一步澄清,這就是你得到的開箱順序(假定VBScript是配置爲默認語言):

  1. JScript中所含<script runat="server" language="jscript" />
  2. 內嵌VBScript中,包含在<% %>
  3. VBScript包含在<script runat="server" language="vbscript" />
+0

哇 - 這很簡單 - 對你:)我花了整整一個早上!我的網站是用V Interdev完成的。這種類型的代碼似乎在我的其餘頁面中工作。我真的必須看看區別。並嘗試找出它們執行的順序。Vinterdev將腳本塊放到了所有位置!謝謝,現在我有一個開始的地方。 – user1391287