jquery.autocomplete怎么没有获取到jsp传回的数据?
用jquery的插件jquery.autocomplete实现自动完成功能
medicineQuery.jsp页面代码(其中qpyName是输入文本框的id)
<script type="text/javascript"> $(document).ready(function() { $("#qpyName").autocomplete("medicineQueryData.jsp", { minChars: 1, scroll: true, width: 310, matchContains: true, autoFill: false, formatItem: function(row, i, max) { return i + "/" + max + ": "" + row.name + "" [" + row.pyName + "]"; }, formatMatch: function(row, i, max) { return row.name + " " + row.pyName; }, formatResult: function(row) { return row.pyName; } }); }); </script>
medicineQueryData.jsp代码
<%@page import="com.ahcmis.util.Java2Json"%> <% Java2Json.getJsonText(); %>
Java2Json代码(用jackson进行解析生成json数据)
public class Java2Json { public static String getJsonText() throws JsonGenerationException, JsonMappingException, IOException, SQLException { ObjectMapper mapper = new ObjectMapper(); List<Medicine> list = new ArrayList<Medicine>(); Connection con = DBUtil().getConnection(); try { String sql = "SELECT name,pyName FROM t_medicine "; Statement s = con.createStatement(); ResultSet rs = s.executeQuery(sql); if (rs != null && rs.next()) { do { Medicine theBean = new Medicine(); theBean.setName(rs.getString(1)); theBean.setPyName(rs.getString(2)); list.add(theBean); } while (rs.next()); } rs.close(); s.close(); } catch (Exception e) { e.printStackTrace(); }finally{ con.close(); } Writer strWriter = new StringWriter(); mapper.writeValue(strWriter, list); String medicineJSON = strWriter.toString(); System.out.println(medicineJSON); return medicineJSON; } }
其中medicine代码为
public class Medicine { private String name; // 中药名称 private String pyName; // 中药拼音 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPyName() { return pyName; } public void setPyName(String pyName) { this.pyName = pyName; } @Override public String toString() { return "Medicine [name=" + name + ", pyName=" + pyName + "]"; } }
运行时发现System.out.println(medicineJSON);已经打印出如下信息
[{"name":"当归","pyName":"danggui"},
{"name":"贯众","pyName":"guanzhong"},
{"name":"黄芪","pyName":"huangqi"}
,{"name":"独活","pyName":"duhuo"},
{"name":"丹参","pyName":"danshen"}]
但为什么输入文本框下没有自动完成数据呢?麻烦各位大侠看一下,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识,
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
92find.com上的一个js插件实现了搜索框自动补全托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音首字母匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows
要求服务器返回的数据是每行一条记录?那我应该怎么从数据库读取数据呢?数据放到哪里呢?怎么将数据转换成jquery.autocomplete能识别的数据呢?谢谢
你应该下去看看 autocomplete 要求什么样的数据,不能想当然的。
我看了为什么 var emails = [ { name: "Peter Pan", to: "peter@pan.de" }, { name: "Molly", to: "molly@yahoo.com" }, ];这样的数据支持,而我返回的数据格式跟这个是一样的啊?
嗯,最近我也遇见了此类问题。我是ajax同步获取的数据然后用的autocomplete进行自动填充。当我首次加载数据的时候只要是没有数据则此控件不能用!不知道怎么解决~!望知道的告诉声,谢谢!
谁说 jquery.autocomplete 支持 JSON 数据的?
jquery.autocomplete 要求服务器返回的数据是每行一条记录
好的,谢谢红薯大侠!
是有 json 的支持,你看看官方提供的在线演示
http://mabp.kiev.ua/content/source/autocomplete/autocomplete.html
先不要跟后端的数据库关联上,生成一些静态的测试数据便于调试