从自动完成文本框的经典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") & """"
感谢您的及时回复。我只是想和它仍然没有工作.. 出现以下错误: 800a01c2 | Wrong_number_of_arguments_or_invalid_property_assignment:_“串” 另外,我没有,因为它被认为是一个字符串重新定义getListOfCode,不一个数组。 – Chrissa
查看我的更新...输出JS变量不包含在引号中。 –
我对您的建议进行了更改,并更改为使用全局变量而不是将其转换为函数。它真的帮了大忙!谢谢。 – Chrissa