[英]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.