这是我的问题:
我有一个一维数组,它是同一个.asp中某些服务器端代码的结果。我想获取此数组并将其中的字符串传输到javascript数组,因此我可以使用表中的值进行显示。
这是我尝试过的代码:
<script language="javascript">
var jsArray = [];
var n = <%=r%>;
for (n = 0; n < 4; n++){
jsArray[n] = '<%=tulemused(n)%>'; //this isn't working for some reason
}
</script>
我个人认为错误是由n
变量创建的。当我在段落中写入时它会正确显示,但在上面标记的行中使用时它不起作用。我也认为for循环可能是问题所在。
我做错了什么?
答案 0 :(得分:3)
那不会起作用,因为asp代码将在 javascript之前执行,所以没有办法传递n
。如果你真的需要asp为你做一些繁重的工作,你可以打一个ajax电话或者捎带预先建立的套接字连接。
答案 1 :(得分:3)
您的“&lt;%=” - 代码将在呈现页面时执行。这意味着,它的编写方式,代码将在呈现页面时执行一次,尝试访问数组的第n个元素。但是,变量n当时不在访问范围内。
因此,如果您希望使用此类代码,则还需要在嵌入代码中包含迭代。
更简单的解决方法是将字符串列表(您希望传递)作为单个连接字符串存储,由已知分隔符分隔并访问Javascript中的连接字符串并将其拆分为JS。
也就是说,如果字符串变量tulemused_concatenated
包含由分隔符','分隔的连接字符串,则以下脚本应该有效。
<script language="javascript">
var jsArray = [];
var n = <%=r%>;
var concatenated_string = '<%=tulemused_concatenated%>'; //this isn't working for some reason
var jsArray[n] = concatenated_string.split(',');
</script>
答案 2 :(得分:2)
我意识到这个问题已经得到了解答,但也许更简单的再现就是......
var jsArray = <%= "[" & Join(tulemused, ",") & "]" %>;
如果您正在使用字符串,那么显然会将语音标记放入,就像这样......
var jsArray = <%= "['" & Join(tulemused, "','") & "']" %>;
这将避免在没有必要时使用循环的任何尴尬。
注意强>
请注意我之前使用此Join
语句中的方括号包含了一个小错字。这是不正确的,应该优先使用电流。
答案 3 :(得分:-3)
我这必须为你工作
<script language="javascript">
var jsArray = [];
<%
Dim n
n=o
%>;
for (n = 0; n < 4; n++){
jsArray[n] = '<%=tulemused(n)%>'; //this isn't working for some reason
<%n++%>
}