在JQuery中访问ASP经典Collection变量

时间:2012-08-27 15:44:41

标签: jquery variables collections asp-classic

大家好我刚刚使用asp经典和jquery,我只是想知道是否有一种方法,我可以将我的集合变量传递给jquery。我的目标是让变量一次向下滑动一个。我在jquery上遇到了.slideDown函数,所以我尝试使用它,但似乎没有工作,所以我想我的标记错了...任何帮助将不胜感激。

ASP代码:          

        <%

        Dim objDictionary, Key,searchWord, myVar,a,i, break
        searchWord = request.QueryString("searchWord")
        break = Response.write("<br />")


        Set objDictionary = CreateObject("Scripting.Dictionary")
        objDictionary.CompareMode=1
        objDictionary.Add "Hello","hello"
        objDictionary.Add "Age","age"
        objDictionary.Add "height","height"
        objDictionary.Add "sample","sample"
        objDictionary.Add "words","words"



        if objDictionary.Exists(searchWord) then
            objDictionary.Remove(searchWord)
           a = objDictionary.Keys

            for i=0 to objDictionary.Count-1
            Response.Write(a(i)) 
            break

            next
            set objDictionary=nothing
        else 
            a = objDictionary.Keys

            for i=0 to objDictionary.Count-1
            Response.Write(a(i)) 
            break
            next
            set objDictionary=nothing

        end if      


        %>

JQUERY CODE:

<script type="text/javascript">
    $(document).ready(function(){
    $("#toFall").slideDown("slow");});
</script>

2 个答案:

答案 0 :(得分:0)

您是否尝试将每个字典键放在某种DOM容器中,例如div - 每个都是#toFall的子句,例如:

   Response.write "<div id='#toFall'>"  
   for i=0 to objDictionary.Count-1
        Response.Write "<div>" + (a(i)) + "</div>"
   next 
   Response.write "</div>"

^^请仔细检查语法 - 我的VBScript生锈了。另外 - 你确定你想要在循环中中断 - 这是否意味着只发生一次写入?

答案 1 :(得分:0)

这是一个通用方法,它将任何经典ASP集合(带有键和值)发送为JavaScript集合:

Sub CollectionToJavaScript(oCollection, sClientSideName) 
    Dim blnFirst
    blnFirst = True
    Response.Write("<" & "script" & " type=""text/javascript"">")
    Response.Write("var " & sClientSideName & " = {")
    For Each key In objDictionary.Keys
        If Not(blnFirst) Then Response.Write(", ")
        Response.Write("""" & key & """: """ & objDictionary(key) & """")
        blnFirst = False
    Next
    Response.Write("};")
    Response.Write("</" & "script>")
End Sub

第一个参数是集合,第二个是用于保存JavaScript集合的客户端变量的所需名称。

这将创建客户端复杂对象,稍后可以使用您提供的名称作为上述方法的第二个参数来访问。

调试它正常工作的一般方法:

<script type="text/javascript">
for (var key in myCollection) {
    alert("key is " + key + " and value is " + myCollection[key]); 
}
</script>

在您的情况下,您应该在填充集合后调用此方法:

Call CollectionToJavaScript (objDictionary, "myCollection")

然后在你的jQuery中,假设你想要向下滑动所有键(即所有键都是有效的DOM元素)都有这样的代码:

$(document).ready(function() {
    for (var key in myCollection) {
        $("#" + key).slideDown("slow");
    }
});

如果您还需要与每个键相关联的值,请在循环中使用myCollection[key]来访问它。