0

リモート データ ソースからオートコンプリートを取得する作業を行っています。JSON が返されますが、オートコンプリート ボックスには入力されません。

$( "#patientName").autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: "http://localhost:8080/cs/accountTypeAhead",
            dataType: "json",
            type: 'POST',
            data: { "patientName": $("#patientName").val(),
                                     "requestID": (new Date()).getTime()},
            success: function( data ) {
                var searchInfo = new Array();   

                for(var key in data) 
                {

                    if(typeof data[key] === "object") {
                        for(var i = 0; i < data[key].length; i++) 
                        {
                            searchInfo.push(data[key]);

                        }//end for loop
                    }//end if 


                    else if(key == "requestID") 
                    {
                        if (data.requestID < $("#requestID").val() )
                        { return false;}

                        else
                        {
                            $("#requestID").val(data.requestID);
                        }
                    }//end if/else


                }//end for loop


                return  searchInfo; 
            }
        });
    },
    minLength: 1,
});

コンソールからの出力は、私が期待していたものです。配列を返すことに原因があると思います。

4

3 に答える 3

1

変更してみる

return  searchInfo; 

response(searchInfo);
于 2012-06-20T21:50:27.567 に答える
0

解決策を助けてくれてありがとう

success: function (data) {
       response($.map(data.results, function (item){
       return { label: item, value: item };
   }));
}
于 2012-06-21T13:55:24.890 に答える
0

これは、リモート JSON を使用したオートコンプリートの「成功」ハンドラーの作業バージョンです。

success: function (data) {
                            response($.map(data, function (item){
return { label: item.FirstName, value: item.FirstName, id:item.MemberId }

}))
                        }

お役に立てれば。

また、こちらのデモンストレーションもご覧ください。http://jqueryui.com/demos/autocomplete/remote-jsonp.html

于 2012-06-21T01:49:32.567 に答える