我需要使用Classic ASP将数组存储在缓存中。我正在使用下面的代码,但它无法使用。
var loans=[];
Application("loanArray")=loans;
请让我知道你为何没有这样做的想法。
答案 0 :(得分:2)
与VBScript数组不同 - 它与典型的C风格数组类似,因为它们存储在连续的固定大小的内存中--JScript数组是稀疏且动态的。它们也是公寓线程的,因此在ASP Application
范围内使用是不安全的。
如果您启用了详细的错误消息,则在尝试时应看到以下消息:
无法将具有公寓模型行为的对象添加到应用程序内部对象。
所以你在这里有几个选择。
将您的数组存储在Session
范围内。您可以在global.asa
Session_OnStart()
中执行此操作,以便在每个会话开始时将其提供。
var a = ['one', 2, 3.0, false];
Session('myArray') = a;
// or...
Session('myArray') = ['one', 2, 3.0, false];
在Application
范围内存储线程安全的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>