Ajax自动完成问题

时间:2012-06-20 21:44:14

标签: jquery jquery-ui autocomplete

我正在努力从远程数据源获取自动完成功能。返回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,
});

我的控制台输出是我所期待的。我认为返回数组会有一定的效果。

3 个答案:

答案 0 :(得分:1)

尝试更改

return  searchInfo; 

通过

response(searchInfo);

答案 1 :(得分: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

答案 2 :(得分:0)

感谢您提供解决方案的帮助

success: function (data) {
       response($.map(data.results, function (item){
       return { label: item, value: item };
   }));
}