![](/img/trans.png)
[英]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.