【发布时间】:2015-08-29 10:51:19
【问题描述】:
我需要使用 Classic ASP 在缓存中存储一个数组。我正在使用下面的代码,但它不起作用。
var loans=[];
Application("loanArray")=loans;
请让我知道您对为什么这不起作用的想法。
【问题讨论】:
标签: asp-classic jscript
我需要使用 Classic ASP 在缓存中存储一个数组。我正在使用下面的代码,但它不起作用。
var loans=[];
Application("loanArray")=loans;
请让我知道您对为什么这不起作用的想法。
【问题讨论】:
标签: asp-classic jscript
与 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>
【讨论】: