我有一个asp经典页面,当我尝试在JavaScript代码中使用asp变量时,它只允许数字,当字符串在变量中时它会发送错误:
<%
dim a, b
a = "11322353464767875689"
b = "someId=1&another=29"
%>
<script language='javascript'>
var urlParamsJS = <%=b%>
alert(urlParamsJS);
var params = 'dependent=yes,directories=no,hotkeys=no,menubar=no,personalbar=no,scrollbars=yes,status=no,titlebar=yes,toolbar=no';
var fullurl = 'page.asp?p=' + urlParamsJS
var wcontainer2 = open ( fullurl, 'otherThings', params);
wcontainer2.resizeTo (900,470);
wcontainer2.moveTo (100,220);
</script>");
当我使用<%=b%>
时,仅打印到屏幕");
但是当我使用<%=a%>
时,我会收到包含此文page.asp?p=11322353464767875689
请帮忙!
答案 0 :(得分:5)
b = "'someId=1&another=29'"
或
var urlParamsJS ='<%=b%>'
选择最适合您代码的那个。
如果要将字符串值赋给变量(使用<%=b%>
进行处理),则必须引用该值。
答案 1 :(得分:1)
尽管@MC ND对their answer是正确的,但它缺乏一些细节,为何会出现这种情况。
经典ASP是一种服务器端处理技术,基本上是指您使用<% Response.Write() %>
写入客户端(Internet浏览器或其他使用HTTP的HTML的客户端)或者它的简写等效<%= %>
发送完全,因为它已被输入。
以你的问题为例,即服务器端变量
b = "someId=1&another=29"
如果您使用<%= b %>
或<% Response.Write b %>
,则输出将是相同的
someId=1&another=29
这是因为Classic ASP发送文字字符串someId=1&another=29
的结果。在VBScript中组成字符串的引号("
)与输出的结果无关。
通常,检查此方法的一种好方法是在客户端上使用View Page Source
或等效函数来查看Web服务器发送的原始输出。如果你有,你会看到这样的东西;
<script language='javascript'>
var urlParamsJS = someId=1&another=29
alert(urlParamsJS);
var params = 'dependent=yes,directories=no,hotkeys=no,menubar=no,personalbar=no,scrollbars=yes,status=no,titlebar=yes,toolbar=no';
var fullurl = 'page.asp?p=' + urlParamsJS
var wcontainer2 = open ( fullurl, 'otherThings', params);
wcontainer2.resizeTo (900,470);
wcontainer2.moveTo (100,220);
</script>
在JavaScript中,此作业(var urlParamsJS = someId=1&another=29
)不正确并会触发异常(取决于您的客户端设置,这可能不明显),并且您的客户端代码将无法按预期运行。
实现此目标的最简单方法是在客户端代码中强制执行此操作。
<script language='javascript'>
// Surrounding with "" or '' tells the client this is a string.
var urlParamsJS = '<%= b %>';
alert(urlParamsJS);
var params = 'dependent=yes,directories=no,hotkeys=no,menubar=no,personalbar=no,scrollbars=yes,status=no,titlebar=yes,toolbar=no';
var fullurl = 'page.asp?p=' + urlParamsJS
var wcontainer2 = open ( fullurl, 'otherThings', params);
wcontainer2.resizeTo (900,470);
wcontainer2.moveTo (100,220);
</script>