2012-01-06 94 views
1

我試圖使用FSO =的Server.CreateObject(「Scripting.FileSystemObject的」)來複制/保存利用ASP程序稱爲文件的VBScript/ASP頁「csImageFile」FSO複製保存文件。使用子程序

目前FSO的代碼,我有位於單獨的.asp頁面上。這是在用戶選擇一個選項(使用value =「xxx.asp ...」調用代碼頁)時從頁面調用的。這工作正常。

問題是FSO代碼頁響應重定向到調用頁面並且刷新丟失了數據。

我希望選擇/選項的'onlclick'通過將代碼放在原始調用頁面的子路徑中(因此避免刷新)來調用FSO代碼。我已經通過各種方式嘗試過,但沒有成功。我現在調用一個js函數,然後它自己調用一個VBscript子例程。這可能是不正確的,但我已經嘗試了很多我現在有點失落的排列組合。

<option onclick="calljsSub()"... 

腳本

<script language="JavaScript"> 
    function calljsSub(){ 
    //alert("js called"); 
    VBFunc(); 
    } 
</script> 

<script language="VBScript"> 
    Sub VBFunc() 
     SET FSO = Server.CreateObject("Scripting.FileSystemObject") 
     If FSO.FileExists ("path to file") Then 
       Set Image = Server.CreateObject("csImageFile.Manage") 
       Image.ReadFile "path to file" 
       Image.WriteFile Server.MapPath("path to new file") 
     end if 
     Set FSO = Nothing 
    End Sub 

VBScript的功能顯得無能爲力。也許有沒有刷新代碼的另一種方式?任何建議是受歡迎的。

我非常感謝任何建議,因爲自聖誕節前我一直試圖解決這個問題。

馬克感謝 馬克

回答

0

感謝任何人試圖幫助。我通過在主頁上隱藏的iframe調用asp頁面來排序。乾杯。

1

這裏的問題是,你是混合了在客戶端上發生的事情,並在服務器上發生的事情:

click event = client 
javascript code = client 
VB Script = server 

您不能調用從服務器上的功能客戶端 - 他們是不同的機器。您需要調用一個URL,即一個ASP頁面。這個ASP頁面需要查看正在發出的請求,抓取所有發送的請求參數,並根據這些參數決定運行哪些代碼 - 在本例中爲VBFunc()。

這是一個網頁是如何工作的最基本的功能:

頁面 - >請求 - >服務器 - >應答(新頁)

是的,你可以運行而無需刷新代碼,使用AJAX技巧,但首先要儘量正確地工作。

+0

感謝您的回覆。我認爲是這樣,但希望有一個簡單的工作。 – 2012-01-07 14:10:48

+0

在類似的問題上,我能夠使用Server.CreateObject(「ADODB.Connection」)寫入MySQL數據庫,而無需在另一個.asp頁面上調用此代碼(隨後進行刷新),還是類似的限制?我更願意在同一頁面上調用子/功能。我猜這是不行?我正在盡我所能去解決這個問題,但我是從老生的VB編程。謝謝 – 2012-01-07 14:21:43

+0

如果你堅持使用微軟技術,你應該投資學習.NET MVC(不僅僅是.NET)。經典的ASP現在已經超過10年了。 – 2012-01-09 14:23:36

相關問題