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

时间:2014-11-04 20:56:54

标签: javascript vbscript asp-classic

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

的提醒

请帮忙!

2 个答案:

答案 0 :(得分:5)

b = "'someId=1&another=29'"

var urlParamsJS ='<%=b%>'

选择最适合您代码的那个。

如果要将字符串值赋给变量(使用<%=b%>进行处理),则必须引用该值。

答案 1 :(得分:1)

尽管@MC NDtheir 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>