[英]Request.QueryString doesn't work in vbscript Asp classic?
[英]Cant get Request.Querystring to pass a variable in VBScript
我正在嘗試將值(在url中)傳遞給vbscript,依次將使用它來啟動可執行文件(在客戶端,這就是為什么我使用vbscript),並將該值作為該可執行文件的參數。 例如:
啟動此exe的語法是
\\HQFileServer\Share Launch.exe 1 computername \\ServerName
因此,我將計算機名作為“名稱”傳遞:
http://localhost/launchclient.asp?Name=Laptop1
launchclient.asp
包含:
<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
Name = Request.QueryString("Name")
oWshShell.run "\\HQFileServer\Share\Launch.exe " & Name & " \\SCCM2012WAN",1,True
</script>
我嘗試通過一次刪除一行來調試它,因為意識到某種原因,它表明查詢字符串未傳遞到腳本中。.當我省略Request.QueryString("Name")
並鍵入價值-它起作用...
有什么想法嗎?
我試圖尋找答案,卻無法解決這個問題。
沒錯,我讀完此評論后,現在我想知道您想做什么。
要將服務器端的值傳遞給客戶端代碼塊,只需在客戶端內部使用一個ASP代碼塊即可。
<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
oWshShell.run "\\HQFileServer\Share\Launch.exe ""<%= Request.QueryString("Name") %>"" \\SCCM2012WAN",1,True
</script>
這樣,ASP引擎將在代碼塊發送到客戶端之前替換<%= Request.QueryString("Name") %>
,如下所示:
<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
oWshShell.run "\\HQFileServer\Share\Launch.exe "Laptop1" \\SCCM2012WAN",1,True
</script>
還提到您需要將其視為string
值,但是由於VBScript使用引號( "
)表示字符串,因此必須轉義字符串中的字符串,您可以通過將引號( ""
)加倍來實現 。
舊答案,但仍然有意義
經典ASP不會處理該代碼,因為此刻該代碼被分類為被忽略的客戶端(HTML)腳本塊,並在服務器響應中按“原樣”傳遞。
有兩種方法可以解決此問題:
更改腳本標簽,所以它知道它應該由服務器通過將處理runat="Server"
屬性的script
標簽。
<script language="VBScript" runat="Server"> set oWshShell = CreateObject("WScript.Shell") Name = Request.QueryString("Name") oWshShell.run "\\\\HQFileServer\\Share\\Launch.exe " & Name & " \\\\SCCM2012WAN",1,True </script>
使用ASP代碼塊。
<% set oWshShell = CreateObject("WScript.Shell") Name = Request.QueryString("Name") oWshShell.run "\\\\HQFileServer\\Share\\Launch.exe " & Name & " \\\\SCCM2012WAN",1,True %>
為避免與客戶端腳本標簽混淆,我個人建議使用ASP代碼塊語法( <% %>
) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.