2012-02-13 168 views
0

我想通過一個servlet接收數據來實現jQuery自動完成插件。 該腳本的工作原理,它確實從servlet中提取結果,但我無法在下拉菜單中正確呈現它。說我寫在搜索欄「HEL」,自動完成下拉列表是:jquery自動完成呈現問題

h 
e 
l 
l 
o 

從我的理解中,自動完成插件應該接受一個數組,我認爲這可能是問題。 這是我的javascript代碼:

<script> 
function getFilteredNames(request, response){ 

    $.ajax({ 
     type: "POST", 
     url: "../servlet/Autocomplete", 
     data: request, 
     success: function(data) { 
      response(data); 
     } 
    }); 
} 

$(document).ready(function(){ 
     $("#buscar").autocomplete({ source : getFilteredNames, minLength: 3}); 
}); 
</script> 

這是servlet代碼的一部分:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

     try { 
      String query = request.getParameter("term"); 
      List<Socio> rs = new ArrayList<Socio>();  
      rs = SocioDAO.getSociosByQuery(query);  

       if (rs.isEmpty()) { 
        out.println("No hay coincidencias"); 
       } 
       else { 

        Iterator <Socio> iterator = rs.iterator(); 
        while (iterator.hasNext()) { 
         String nombre = (String) iterator.next().getNombre(); 
         out.println(nombre); 
        } 

      } 

任何建議,將不勝感激! 謝謝, 尼克

+0

提供的實用通話也許我失去了一些東西,但是,看着JavaScript中,我沒有看到該請求是如何得到到servlet在所有 – KTastrophy 2012-02-13 19:28:56

+0

我發送的數據與數據:請求,我通過使用request.getParameter(「term」)在servlet上選擇它,然後在搜索框中輸入。 – nicoconstanzo 2012-02-13 22:43:10

+0

我明白了,但請求如何填充?我在自動完成功能中看到指定源函數是什麼......但是如何將參數傳遞給它?也就是說,請求和響應? – KTastrophy 2012-02-14 16:56:41

回答

0

自動完成UI插件接受數組,格式化在JSON數據中的對象。

  1. 所以我只好把數據類型:JSON在烏爾$就調用
  2. 爲u [R使用的servlet u必須是JSON格式格式化 之前通過Ajax調用發送給客戶端。

烏拉圭回合的數據轉換成JSON格式u可以使用由http://www.json.org/

+0

好的,我會試試看,讓你知道!感謝您的建議。 – nicoconstanzo 2012-02-15 16:25:35

+0

它工作!感謝您的建議。 – nicoconstanzo 2012-02-15 20:09:52

+0

@ user1207556快樂完全是我的。快樂編碼:) – Vivek 2012-02-16 06:28:39