从自动完成文本框的经典ASP返回一个数组从VB脚本到JQuery

问题描述:

我是一个Web开发的初学者,目前正在添加一个自动完成文本框,该文本框根据用户输入从MS SQL服务器中检索数据。从自动完成文本框的经典ASP返回一个数组从VB脚本到JQuery

我在JQuery中声明了一个名为CodeList的数组,并从VB脚本函数中调用返回代码,名为getListOfCode。它抛出一个错误的数组:CodeList不能被转换成函数:getListOfCode。 (错误代码:ASP_0106 _:_ 80020005 | Type_Mismatch)

我试过Redim函数getListOfCode()作为VB脚本中的数组,但它不起作用。任何人都可以请给我一些建议吗?

VB脚本部分

<% 
Function getListOfCode() 


    Set objRec = Server.CreateObject("ADODB.Recordset") 

    strSQL = "Select distinct Code_A, Code_A + " & " ' : ' " & _ 
       " + Long_Name AS Code_Name " & _ 
       "FROM CodeMaster " & _ 
       "Where Type = 'A' " 

    objrec.Open strSQL, objConnect 

    Dim CodeList(), i 
    Redim CodeList(objrec.Fields.Count - 1) 
    i = 0 

    Do Until i < objrec.Fields.Count - 1 

     CodeList(i) = objrec.Fields("Code_Name") 

     i = i + 1 
     objrec.MoveNext 

    Loop 

    getListOfCode = CodeList 
    >> To return an array to Java Script with casting. 
    If I write CodeList(i), it does not throw an error 
    which means getListOfCode is being recognized as a string 

    objRec.Close 
    Set objRec = Nothing 

End Function 
%> 

JQuery的部分

$(function() { 
var CodeList = [ 
    <%= getListOfCode() %> 
]; 
$("#frmCode").autocomplete({ 
    source: CodeList 
}); 
}); 

任何意见,将不胜感激。先谢谢你。

我做了你的建议进行了修改,并更改为使用全局变量而不是转换为函数。

只是改变这一行:

getListOfCode = CodeList

到:

getListOfCode = String.Join(",", CodeList) 

而且应该这样做!该字符串将在ASP文件中呈现为原始JSON数组。

而且,改变这一行:

CodeList(i) = objrec.Fields("Code_Name") 

包括引号使得JS解释你的字符串作为实JS字符串:

CodeList(i) = """" & objrec.Fields("Code_Name") & """" 
+0

感谢您的及时回复。我只是想和它仍然没有工作.. 出现以下错误: 800a01c2 | Wrong_number_of_arguments_or_invalid_property_assignment:_“串” 另外,我没有,因为它被认为是一个字符串重新定义getListOfCode,不一个数组。 – Chrissa

+0

查看我的更新...输出JS变量不包含在引号中。 –

+1

我对您的建议进行了更改,并更改为使用全局变量而不是将其转换为函数。它真的帮了大忙!谢谢。 – Chrissa