如何在客户端Javascript中使用经典ASP字符串
How do you use Classic ASP string in client side Javascript?
我有一个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
的警报
救命!
b = "'someId=1&another=29'"
或
var urlParamsJS ='<%=b%>'
选择一个更适合您的代码。
如果要将字符串值附加到变量(使用<%=b%>
时所做的操作),则必须将该值引起来。
尽管@MC ND的回答是正确的,但对于为什么会出现这种情况,它缺乏一些细节。
服务器端/客户端
经典ASP是一种服务器端处理技术,从根本上讲,您使用<% Response.Write() %>
或其简写等效<%= %>
向客户端(Internet浏览器或其他通过HTTP使用HTML的客户端)写入的内容将在键入时被发送。
以您的问题为例,服务器端变量
b = "someId=1&another=29"
如果使用<%= b %>
或<% Response.Write b %>
,输出将是相同的
someId=1&other=29
这是因为经典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>
相关文章:
- 在页面之间传递值的经典ASP
- 使用经典ASP
- 经典asp中下拉列表中的选项值
- jQuery Ajax+经典ASP返回错误'意外的输入结束'
- 从服务器端经典 asp 和客户端 javascript 传递字符串
- 如何在单击“提交”按钮后保留经典 ASP 页(发生验证错误时)
- 在经典 ASP 中将值从 JavaScript 传递到 VB Scipt,并在 JavaScript 中调用 VB 脚本
- 经典 ASP - 下拉列表:选择与第一个下拉列表具有相同值的所有下拉列表
- 由vbscript下拉列表填充的经典asp-javascript数组
- AJAX-经典ASP-发布表单
- 客户端内服务器端经典ASP代码的问题<脚本>标签
- 单击表单提交按钮时调用经典ASP函数
- 一个输入文本值基于另一个改变's(jquery autocomplete)值(经典ASP)
- 经典 ASP 流控制的替代方法
- 从经典 ASP 中的 SQL 数据集为高图表创建多个数组
- 使用 Javascript 从经典 ASP 中的文件中读取文本
- 将 JavaScript 变量发送到经典 ASP
- 如何在经典 ASP 中使用 split() 函数进行批量输入文本框
- 在经典 ASP 中,单击按钮时调用多个函数
- 动态表,每行 1 个下拉列表(经典 ASP [VBScript] 和 JavaScript)