2012-06-20 183 views
0

我正在從遠程數據源獲取自動完成功能。這是返回JSON,但它不會填充自動填充框。Ajax自動完成問題

$("#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, 
}); 

我從控制檯輸出正是我所期待的。我認爲它有一些到期歸還數組。

回答

1

嘗試改變

return searchInfo; 

通過

response(searchInfo); 
+0

那你是怎麼得到的價值呢?它正在返回正確的值。然後你看看[JQuery UI]上的例子(http://jqueryui.com/demos/autocomplete/remote-jsonp.html)它是相似的。 –

+0

@David Nuckols:編輯我的答案 –

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

+0

感謝您的幫助。最終的解決方案是 –

0

感謝您的幫助的解決方案是

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