簡體   English   中英

如何在Java中為鍵值對創建JSON數組並在JQuery自動完成中使用它來分隔鍵值

[英]How to Create JSON Array for Key Value Pair in java and use it in JQuery Autocomplete to to Separate KEY VALUE

我一直很努力,已經在各處搜索了此解決方案,但沒有。

我有一個具有Jquery自動完成功能的JSP頁面。

<body>
    <%
        String ValueRec = request.getParameter("Category");
        String autosuggest = request.getParameter("autosuggest");
        out.println(ValueRec);
        out.println(autosuggest);
    %>
    <form>
        <input type="hidden" id="autosuggest" name="autosuggest" value="N"/>
        <input type="text" name="Category" id="Category" value="" id="CategoryID">
        <script>
            $("#Category").autocomplete({
                delay: 100,
                autoFocus: true,
                selectFirst: true,
                source: 'ProviderSuggest.jsp',
                select: function (event, ui) {
                    $('#autosuggest').val('Y');
                }
            });
        </script>
        <input type="submit" value="Submit"/>
    </form>
</body>

ProviderSuggest.jsp的代碼如下:

    <%@page import="java.util.Hashtable"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="com.google.gson.Gson"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Iterator"%>
<%@page import="Functions.DBConnections"%>
<%@page import="java.util.List"%>
<%
    String query = request.getParameter("term");
    List<String> CategoryList = new DBConnections().GetCategoryList(query);
    Iterator CatIterator = CategoryList.iterator();
    String JCategory = "";
    Map CategoryMap = new HashMap<>();
    Gson gson = new Gson();
    while (CatIterator.hasNext()) {
        String Category = (String) CatIterator.next();
        String CategoryID = (String) CatIterator.next();
        CategoryMap.put(CategoryID, Category);
        //JCategory = gson.toJson(CategoryMap);
    }
    //System.out.println(CategoryMap);
    JCategory = gson.toJson(CategoryMap);
    System.out.println(JCategory);
    //out.print(JCountry);
    out.print(JCategory);
%>

當我在自動完成字段中鍵入關鍵字時,我會根據需要獲取類別。 ProviderSuggest.jsp將以json格式返回數據,如下所述:

{"110":"MRI SCAN","101":"CT SCAN","102":"SONOGRAPHY","103":"X-RAY","104":"PATHOLOGY"}

我正在使用Google.gson.Gson。

我的要求是,當用戶鍵入MRI時,他應該看到MRI SCAN,CT SCAN等類別。 我看到了這一點,但輸入字段的值應為“ 110”或“ 101”,依此類推,以便在我進一步處理數據時,我僅發送類別ID,而不發送類別。

如果有人能幫助我提供實現此目標的完整代碼,我將感到非常高興。 我相信我在JSon數組創建部分和我們讀取JSON數據的Jquery部分犯了一些錯誤。

謝謝。

您可以通過這種方式呈現自動完成數據。 將categoryid添加為數據屬性,然后選擇時,將具有一個具有data-tag的標簽,然后可以檢索.data('id')= Category ID。 希望能幫助到你。

$("#Category").autocomplete({
  delay: 100,
  autoFocus: true,
  selectFirst: true,
  source: 'ProviderSuggest.jsp',
  select: function (event, ui) {
    $('#autosuggest').val('Y');
  }
}).data('autocomplete')._renderItem = function(ul, item) {
   return $("<li>").data("item.autocomplete", item).append("<a data-id='"+item.CategoryID+"'>" + item.Category + "</a>").appendTo(ul);
};

而且您的Java應該是這樣的:目的是要創建一個數組,該數組的id為id,另一個key為value(2個key)

[{CategoryID :"110",Category:"MRI SCAN"},{CategoryID :"101",Category:"CT SCAN"]}

<%@page import="java.util.Hashtable"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="com.google.gson.Gson"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Iterator"%>
<%@page import="Functions.DBConnections"%>
<%@page import="java.util.List"%>
<%
    String query = request.getParameter("term");
    List<String> CategoryList = new DBConnections().GetCategoryList(query);
    Iterator CatIterator = CategoryList.iterator();
    String JCategory = "";
    Map CategoryMap;
    Gson gson = new Gson();
    List autoComplete = new ArrayList();
    while (CatIterator.hasNext()) {
        String Category = (String) CatIterator.next();
        String CategoryID = (String) CatIterator.next();
        CategoryMap = new HashMap<String,String>();
        CategoryMap.put("Category", Category);
        CategoryMap.put("CategoryID", CategoryID);
        //JCategory = gson.toJson(CategoryMap);
        autoComplete.add(CategoryMap);
    }

    JCategory = gson.toJson(autoComplete);
    System.out.println(JCategory);
    //out.print(JCountry);
    out.print(JCategory);
%>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM