2012-05-08 70 views
0

我創建了ASP頁面加載動態內容的代碼與此類似:使用Server.Execute重複動態內容

<% 
    var1 = int(rnd * 5) + 1 
    var2 = int(rnd * 10) + 1 
%> 
<html> 
<body> 

what variable 1 is: <%=var1%> 
what variable 2 is: <%=var2%> 

</body> 
</html> 

然後我有一個使用使用Server.Execute執行以前的文件中提到的另一頁2+次使用循環。代碼如下所示:

<% filename = request.querystring("page") %> 

<table class="domtable"> 
<% for j = 1 to 2%> <%qnumb = qnumb + 1%> 
    <tr> 
     <td align="left"> 
     <%server.execute (filename)%> 
     <% If qnumb < 2 then%> 
     <br/><hr><br/> 
     <%end if%> 
     </td></tr> 
    <%next%> 
</table> 

所以對於過去幾個月的這個一直致力於完美的我,對兩個獨立執行這兩個變量加載不同的號碼。然後今天,我在我的服務器上覆制了一個文件夾,重命名了它,現在神奇地,變量是相同的數字,約爲瀏覽器刷新次數的10倍。

這發生在我一個月前在第二臺服務器上的相同文件,我不得不從第二臺服務器上刪除所有文件,並從我的第一臺服務器(現在重複的一臺服務器)下載它們,然後上傳他們回來,並修復它。不幸的是,我沒有下載我的第一臺服務器的整個服務器內容,所以我無法扭轉這個過程。所以我不確定這個問題是否是服務器端,還是與我正在編寫的代碼有關?我只是不知道爲什麼它會工作很長時間,然後就停止工作。

我試過使用meta no-cache控件。我刪除了之前從服務器複製的新文件夾,但這不起作用。我也嘗試刪除最近幾天已上傳的文件,但也沒有工作。我試圖加載「文件名」作爲數組如:

filename(1) = request.querystring("page") 
filename(2) = request.querystring("page") 

for j = 1 to 2 
    Server.Execute(filename(j)) 

next 

我真的希望有人知道我在做什麼錯在這裏。

CNC中

我也是這樣做的,得到了​​相同的結果。

<% 
'rnd.asp' 
pStr = "private, no-cache, must-revalidate" 
Response.ExpiresAbsolute = #2000-01-01# 
Response.AddHeader "pragma", "no-cache" 
Response.AddHeader "cache-control", pStr 
server.execute ("rndj.asp") 
response.write ("<hr>") 
randomize(3) 
server.execute ("rndj.asp") 
%> 

<% 
'rndj.asp' 
pStr = "private, no-cache, must-revalidate" 
Response.ExpiresAbsolute = #2000-01-01# 
Response.AddHeader "pragma", "no-cache" 
Response.AddHeader "cache-control", pStr 
randomize 
response.write rnd 
response.write "<br>" 
response.write rnd 
%> 

我開始使用此代碼下面看起來在指定的文件爲純文本,並刪除ASP標記從它然後使用執行原來的文件中運行它。這個問題是我調用的所有頁面都用於其他資源,替換腳本不會讓我在include行中添加asp標籤。

<% 
Dim sTargetFile, sTargetFileContents 
Dim oFSO, sContents 

Function GetFileContentsForExecution(sTargetFile) 

'Obtain a reference to the FileSystemObject 
Set oFSO = Server.CreateObject("Scripting.FileSystemObject") 

'Obtain the file contents 
sContents = oFSO.OpenTextFile(Server.MapPath(".") & "\" & sTargetFile).ReadAll 
Set oFSO = Nothing 'reference to the FileSystemObject 

'Remove the ASP scripting tags 
rand = int(rnd * 2) 
sContents = Replace (sContents, "<" & "%", "") 
sContents = Replace (sContents, "%" & ">", "") 
GetFileContentsForExecution = sContents 
End Function 

sTargetFile = "rndj.asp" 

for j = 1 to 6 

'Get the contents of the file to execute 
sTargetFileContents = GetFileContentsForExecution(sTargetFile) 
Execute sTargetFileContents 

next 

if j < 3 then 
response.write ("<br/><hr><br/>") 
end if 
%> 
+0

有沒有你不使用任何的理由包括,而不是使用Server.Execute?我想你可以很容易地通過改變你的文件而不是包含這個問題來消除這個問題。 – HK1

+0

是的,我開始使用包括,但我需要包括的文件列表太大,並大大減緩頁面的加載時間。我發現使用Server.Execute的速度更快,並使我能夠在腳本中使用變量,因爲您不能在include標籤中使用變量。 – xxstevenxo

+0

它適用於一臺服務器,但不適用於其他服務器。兩者都使用完全相同的腳本,並且都由Godaddy託管。 – xxstevenxo

回答

0

Link to working solution

<% 
'rnd.asp' 
randomize 

application("randomseed") = rnd 
server.execute ("rndj.asp") 

application("randomseed") = rnd 
server.execute ("rndj.asp") 

%> 

<% 
'rndj.asp' 
randomize application("randomseed") 
response.write rnd 
response.write("<br />") 
response.write rnd 
response.write("<br />") 
response.write("<br />") 

%>