Asp classic 使用经典ASP在缓存中存储阵列

Asp classic 使用经典ASP在缓存中存储阵列,asp-classic,jscript,Asp Classic,Jscript,我需要使用经典ASP在缓存中存储一个数组。我正在使用下面的代码,但它不起作用 var loans=[]; Application("loanArray")=loans; 请告诉我您的想法,为什么这不起作用。与VBScript数组不同——VBScript数组类似于典型的C样式数组,因为它们存储在连续的固定大小内存中——JScript数组稀疏且动态。它们也是单元线程,因此在ASP应用程序范围内使用不安全 如果启用详细错误消息,则在尝试时应看到以下消息: 无法将具有单元模型行为的对象添加到应用程序内

我需要使用经典ASP在缓存中存储一个数组。我正在使用下面的代码,但它不起作用

var loans=[];
Application("loanArray")=loans;
请告诉我您的想法,为什么这不起作用。

与VBScript数组不同——VBScript数组类似于典型的C样式数组,因为它们存储在连续的固定大小内存中——JScript数组稀疏且动态。它们也是单元线程,因此在ASP
应用程序
范围内使用不安全

如果启用详细错误消息,则在尝试时应看到以下消息:

无法将具有单元模型行为的对象添加到应用程序内部对象

所以你有几个选择

  • 将阵列存储在
    会话
    范围内。您可以在
    global.asa
    Session\u OnStart()
    中执行此操作,以使其在每次会话开始时可用

    var a = ['one', 2, 3.0, false];
    Session('myArray') = a;
    
    // or...
    
    Session('myArray') = ['one', 2, 3.0, false];
    
  • 应用程序
    范围中存储线程安全的VBScript数组,并在需要访问时将其转换为JScript数组。例如:

    <script runat="server" language="vbscript">
    
        Application.Lock
        Application("myArray") = Array("one", 2, 3.0, False)
        Application.Unlock
    
    </script>
    
    <script runat="server" language="javascript">
    
        // Retrieve the array and convert it to a JavaScript array...
        var a = VBArray(Application("myArray")).toArray();
    
        for (var i = 0; i < a.length; ++i) {
            Response.Write(a[i] + '<br>');
        }
    
    </script>
    
    
    应用程序。锁
    应用程序(“myArray”)=数组(“一”,2,3.0,False)
    应用程序。解锁
    //检索数组并将其转换为JavaScript数组。。。
    var a=VBArray(应用程序(“myArray”)).toArray();
    对于(变量i=0;i');
    }