0

ローカル配列と他のページからのリモート ソース データの 2 つのケースで、Jquery からの単純なオートコンプリートから始めています。両方のデータは同じであると確信していますが、オートコンプリートの動作は異なります。以下の私のコードを参照してください:

1.ローカル配列あり

Javascript コード

$(document).ready(function() {
        $("#txtArr").autocomplete({
        source: programmingLang,
        change:function(event, ui){
            if (ui.item==null)
                $('#txtArr').val(-1);
        }
        })
})

プログラミング言語配列:

var programmingLang = [{ "value": "ActionScript", "id": 31 }, { "value": "AppleScript", "id": 2 }, { "value": "JavaScript", "id": 3 }, { "value": "Haskell", "id": 33 }, { "value": "Architects", "id": 27 }, { "value": "Scheme", "id": 1 }, { "value": "PHP", "id": 29 }, { "value": "Marketing", "id": 25 }, { "value": "Perl", "id": 15 }, { "value": "Training", "id": 32}];

ブラウザから、p、...、リストに表示された「p」を含むアイテムを入力しました-完璧です:)

2. ソース データによるリモート

Javascript コード

<script type="text/javascript">
    $(document).ready(function() {
        $("#txtArr").autocomplete({
        source: "script.asp",
        change:function(event, ui){
            if (ui.item==null)
                $('#txtArr').val(-1);
        }
        })
})

スクリプト.asp

<%    
Response.ContentType = "application/json; charset=utf-8"    
Response.Write("[{ ""value"": ""ActionScript"", ""id"": 31 }, { ""value"": ""AppleScript"", ""id"": 2 }, { ""value"": ""JavaScript"", ""id"": 3 }, { ""value"": ""Haskell"", ""id"": 33 }, { ""value"": ""Architects"", ""id"": 27 }, { ""value"": ""Scheme"", ""id"": 1 }, { ""value"": ""PHP"", ""id"": 29 }, { ""value"": ""Marketing"", ""id"": 25 }, { ""value"": ""Perl"", ""id"": 15 }, { ""value"": ""Training"", ""id"": 32}]")
%>

ブラウザーから: p と入力します ... 配列内のすべてのアイテムが一覧表示されます :(

両方がローカル配列と同じように機能するように修正するにはどうすればよいですか?

どうもありがとう。


それは今動作します。elliottjmillsのアドバイスと同様にscript.aspを変更します。

 <%    
Response.ContentType = "application/json; charset=utf-8"
strSql="SELECT * FROM HR_Employee WHERE **Fullname like '%" & request.QueryString("term")** & "%'"   

strconn="PROVIDER=SQLOLEDB;DATA SOURCE=...;DATABASE=...;USER ID=...;PASSWORD=...;"  

set conTem=Server.CreateObject("ADODB.Connection")
conTem.Open(strconn)

Set rsElementTem = Server.CreateObject("ADODB.Recordset")
rsElementTem.Open strSql,conTem,3,3
strArr=""
if not rsElementTem.EOF then
    rsElementTem.MoveFirst
    'rsElementTem.Filter="Fullname like '*" & **request.QueryString("term")** & "*'"

    do while not rsElementTem.EOF
        if strArr<>"" then strArr=strArr & ","
        strArr=strArr & "{"&_
                        """value"":""" & rsElementTem("Fullname") & """, ""id"":" & rsElementTem("PersonID") & "}" 

        rsElementTem.MoveNext
    loop
end if


Response.Write "[" & strArr & "]"

%>

4

2 に答える 2

1

これは、あなたがしたいことと似たようなことをするはずです:

Script.asp:

<%
Response.ContentType = "application/json; charset=utf-8"

Dim value(6)
Dim id(6)

value(0) = "dog"
id(0) = 1
value(1) = "cat"
id(1) = 20
value(2) = "pig"
id(2) = 31
value(3) = "monkey"
id(3) = 25
value(4) = "camel"
id(4) = 16
value(5) = "carrot"
id(5) = 28
value(6) = "donkey"
id(6) = 9

Dim jsonString
jsonString = "["

For i = 0 to Ubound(value)
    If(left(value(i), Len(Request.Querystring("term"))) = Request.Querystring("term")) Then
    jsonString = jsonString & " { ""value"": """ & value(i) & """, ""id"": " & id(i) & " },"
    End If
Next

jsonString = Left(jsonString, Len(jsonString)-1) & " ]"
Response.Write jsonString
%>

termこれにより、クエリ文字列のパラメーターが配列の各要素の先頭文字と比較されます。

一致ごとに、シリアル化された形式の文字列に値が追加されます。

最後に、関数で末尾のコンマを削除しLen、角括弧を閉じて、文字列の内容を出力します!

于 2012-07-20T11:14:52.303 に答える
0

サーバーサイドからソートされたリストを持ってくる必要があります

于 2012-07-20T04:43:36.390 に答える