如何在客户端Javascript中使用经典ASP字符串

How do you use Classic ASP string in client side Javascript?

本文关键字:经典 ASP 字符串 客户端 Javascript      更新时间:2023-09-26

我有一个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>