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

这是我使用远程 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 回答
0

感谢您的帮助,解决方案是

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