jquery.autocomplete怎么没有获取到jsp传回的数据?

发布于 2021-12-02 04:44:53 字数 3183 浏览 345 评论 8

用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

秋意浓 2021-12-06 11:55:21

实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识,
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
92find.com上的一个js插件实现了搜索框自动补全托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音首字母匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows

猫性小仙女 2021-12-06 11:50:51

要求服务器返回的数据是每行一条记录?那我应该怎么从数据库读取数据呢?数据放到哪里呢?怎么将数据转换成jquery.autocomplete能识别的数据呢?谢谢

悟红尘 2021-12-06 11:32:52

你应该下去看看 autocomplete 要求什么样的数据,不能想当然的。

猫性小仙女 2021-12-06 07:24:58

我看了为什么 var emails = [ { name: "Peter Pan", to: "peter@pan.de" }, { name: "Molly", to: "molly@yahoo.com" }, ];这样的数据支持,而我返回的数据格式跟这个是一样的啊?

狠疯拽 2021-12-06 03:28:48

嗯,最近我也遇见了此类问题。我是ajax同步获取的数据然后用的autocomplete进行自动填充。当我首次加载数据的时候只要是没有数据则此控件不能用!不知道怎么解决~!望知道的告诉声,谢谢!

风苍溪 2021-12-05 02:02:47

谁说 jquery.autocomplete 支持 JSON 数据的?

jquery.autocomplete 要求服务器返回的数据是每行一条记录

巡山小妖精 2021-12-04 13:13:06

好的,谢谢红薯大侠!

泪冰清 2021-12-04 06:11:56

是有 json 的支持,你看看官方提供的在线演示

http://mabp.kiev.ua/content/source/autocomplete/autocomplete.html

先不要跟后端的数据库关联上,生成一些静态的测试数据便于调试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文