0

根据 jquery ui API,自动完成字段的来源可能是数组变量。如何使用 vbscript 记录集结果的结果填充数组变量?

在我的页面正文中,我的代码如下所示:

Dim rs, data_source
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_rtasql_STRING
rs.CursorType = 2
rs.CursorLocation = 2
rs.LockType = 3

rs.source = "select field1 from mydatabase where whatever > soandso"
WHILE NOT rs.EOF
//add each result to string array JavaScript/Jquery can access.

我想在我的文档就绪函数中为我的 jquery 自动完成字段提取变量。如何实施?

谢谢你。

4

3 回答 3

0

http://jqueryui.com/autocomplete/#remote远程数据源。当使用 firefox 和 firebug 时,我按 F12 打开控制台并查看输入内容时发出的 xhr 请求。

检查响应我可以看到使用了 JSON:

[{"id":"Turdus philomelos","label":"Song Thrush","value":"Song Thrush"},
 {"id":"Melospiza melodia","label":"Song Sparrow","value":"Song Sparrow"}
]

我认为您可以省略 id,因为那是可选的。您可以尝试返回一个字符串数组,例如:

["Song Thrush","Song Sparrow"]

您显示的 vb 代码看起来像不会在浏览器中运行的服务器端代码,自动完成将在用户键入内容时调用该 asp 页面,然后用于过滤您的数据:

自动完成发送的 GET 参数称为 term。在jquery ui页面查找js代码:http: //jqueryui.com/autocomplete/#remote

于 2013-08-09T05:53:43.053 回答
0

你可以做这样的事情,假设你很高兴在页面加载时填充列表并且不想实时查找服务器:

<%
' server-side ASP
Dim rs, data_source, ado
Set ado = CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
ado.ConnectionString = MM_rtasql_STRING
ado.Open
rs.ActiveConnection = ado
rs.CursorType = 2
rs.CursorLocation = 2
rs.LockType = 3

rs.Open "select field1 from mydatabase where whatever > soandso"

' build up a string which looks like a Javascipt array (eg "['val1','val2']")
' instead of a loop, you could use rs.GetString(), which is quicker
dim s: s = "["
do until rs.EOF
    s = s & "'" & CStr(rs("field1")) & "',"
loop
rs.Close
' remove trailing comma and complete array string
s = left(s, len(s) - 1) & "]"
%>
<!-- client-side -->
<script type="text/javascript">
     $(document).ready(function() {
           $("textbox-selector").autocomplete({
                 source: <%=s %> // ASP insert of javascript array string
           });
     });
</script>

我没有测试过这个和我从他们的例子中得到的 jQuery:http: //jqueryui.com/autocomplete/

于 2013-08-09T08:22:32.590 回答
-1

使用 push() 方法怎么样?

于 2013-09-26T23:12:38.827 回答