这些天,自己动手练习servlet项目BBS系统(运行环境win7+MySql+Myeclipse6.5)。
各个功能都是自己想着法子往上面添加,于是,在用户登录界面,异想天开的想加一个搜索引擎(百度、搜狗等)那样的自动补全功能,随着客户自己输入,自动下拉弹出相关的内容供客户选择,当然,下拉的东西都是从后台获取的。
在网上搜索,相关的插件还真有不错的,比如,Big亮的自动补全插件(下面有big亮的博客地址),Demo简单易懂,实现的效果太完美了,兴奋之余就决定把这个功能嵌套到自己的登陆页面。
动手做了起来,引入css、js等,按照文档中的注释一步步琢磨,可是后台的数据无论如何都无法传到前台,ajax的回调函数死活不执行,但往后台传参数等都是正常的(直接引入的插件无法传中文,后面会解释),ajax倒是能调动后台的程序执行。
原因先不分析了,先看看我是怎么调用的吧!
jsp中使用Jquery调用big插件的写法:
$("#UserName").bigAutocomplete({url:"<%=path %>/selectnames"});
很简单吧?url后面直接就是调用servlet。<%=path %>这个东西不理解,那就自己去充电吧!(PS:这是项目根路径。)
后台我就不贴了,很简单,无外乎就是接受ajax提交过去的关键字,然后后台模糊查询,返回给回调函数json等;
现在着重说一下jquery.bigautocomplete.js,这个文件里面的注释很明了,多看几遍就能发现关键所在,如果想调用后台,肯定是要走ajax异步的方式,于是就能找到$.post(){},这里面的相关内容的了解,几乎就解决了问题的一大半了,剩下的就是小问题了。
不过,我把这部分的内容作了更换,便于实现中文的传输,更换前后的内容如下;
更换前,在jquery.bigautocomplete.js文件的第161行可以找到:
$.post(url,{keyword:keyword_},function(result){ makeContAndShow(result.data)
},"json")
这段代码需要结合上下文看,url,就是请求后台的url;keyword,就是每次输入的关键字,回调函数,还有最重要的--json。
这段代码被我替换掉了,替换后的代码如下:
$.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
url: url,
data:{keyword:keyword_}, dataType:"json", success:function(result){ makeContAndShow(result.data)
}
})
更换代码最主要是可以添加一个属性contentType,变换传输关键字的编码方式。
除此之外,这个jquery插件还有一个头疼的地方,返回的数据格式务必是json格式的,稍微有点差错前面的js回调函数就无法执行,我使用的是java语言,后台servlet的doPost方法内要求有编码方式,下面我贴出来:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setCharacterEncoding("UTF-8");
String key = req.getParameter("keyword");
PrintWriter out = resp.getWriter();
StringBuffer data = new StringBuffer();
String usernames = ServicesFactory.getUser_services().get_usersname(key);
String []name = usernames.split("#");
data.append("{").append("data").append(":").append("[");
for (int i = 0; i < name.length; i++)
{
data.append("{").append('"').append("title").append('"').append(':').append('"').append(name[i]).append('"').append("},");
}
JSONObject jb = JSONObject.fromObject(data.substring(0,data.length()-1)+"]}");
out.print(jb);
out.flush();
}
至于java的其他配置我就不赘述了!
效果图不会直接贴图片,看看附件吧,应该好理解,一个是后台数据库的图片,页面效果就是代码实现后前台的效果。
希望大家多多指点,多多交流。
big亮的博客地址:http://liu400liu.iteye.com/blog/1611032
- 大小: 51.7 KB
- 大小: 379.2 KB
分享到:
相关推荐
本文将深入探讨高级jQuery自动补全插件的原理、使用方法以及相关技巧。 ### 插件简介 "高级jQuery自动补全插件"是一款为输入框添加智能提示功能的工具,适用于各种表单场景,如搜索框、地址输入等。它通过监听用户...
jQuery文本框联想补全自动完成插件是一款非常实用的前端开发工具,它可以帮助开发者在网页的输入框中实现智能联想和自动补全功能。这个插件基于JavaScript库jQuery构建,因此,使用它之前需要确保项目中已经引入了...
例如,使用jQuery的`$.ajax()`方法向服务器发送请求,服务器返回JSON数据,然后更新自动补全插件的`lookup`属性。 ```javascript $("#autocomplete-input").autocomplete({ serviceUrl: 'path/to/your/api', ...
本篇将围绕"jQuery自动补全插件"这一主题,深入探讨其工作原理、使用方法以及相关源码分析。 首先,让我们了解什么是jQuery自动补全插件。这个插件通常用于在用户在输入框中输入文字时,根据预设的数据源提供匹配...
至此,我们就成功地使用 jQuery 和 `jquery.bigautocomplete.js` 创建了一个仿搜索引擎文本框自动补全插件。这个插件不仅可以提高用户的输入效率,还能提供个性化的交互体验,是现代 Web 应用中不可或缺的一个功能。...
jQuery百度搜索自动补全插件基于流行的JavaScript库jQuery和typeahead.js实现,为网页上的搜索框提供了高效且用户友好的自动补全功能。这个插件主要用于提升用户体验,尤其是在需要处理大量数据并希望用户能快速找到...
在本文中,我们将深入探讨如何使用jQuery实现一个基于Ajax的文本框自动补全功能,以及相关的`autocomplete`插件的完整实例。这个功能在许多Web应用程序中非常常见,它能够提高用户输入的效率和用户体验。 首先,让...
总的来说,jQuery实现自动补全功能是一个实用且常见的话题,它涉及到DOM操作、事件监听、Ajax请求以及数据处理等多个JavaScript和jQuery的核心概念。通过学习和实践,开发者能够提升用户界面的交互性和可用性,增强...
标题“改进版 jquery 仿百度谷歌自动补全输入(支持中文)”涉及到的是一个基于jQuery的前端开发技术,旨在实现类似百度和谷歌搜索框的自动补全功能,而且这一版本特别优化了对中文字符的支持。在网页交互设计中,...
本篇文章将深入探讨jQuery Suggest插件的使用方法、原理以及如何结合PHP实现一个简单的自动补全示例。 **一、jQuery Suggest 插件介绍** jQuery Suggest插件是基于JavaScript库jQuery的一个组件,它提供了一种高效...
在自动补全插件中,jQuery的强大功能被用来监听用户的输入,处理数据,以及展示下拉菜单中的建议项。这种插件通常基于特定的数据源,如JSON对象数组或API接口,来生成补全选项。 自动补全的基本工作流程如下: 1. ...
"BigAutocomplete"就是这样一个插件,专为JavaScript设计,旨在提供高效、可定制化的自动补全功能。下面我们将深入探讨这个插件及其相关知识点。 一、JavaScript自动补全原理 自动补全的基本原理是通过监听用户在...
"jQuery 插件demo 自动补全"是指一个使用jQuery编写的插件示例,它实现了自动补全的功能,通常在输入框中输入文字时,会根据已输入内容动态显示匹配的建议列表。这种功能常见于搜索框、地址栏等场景,提高了用户输入...
jQuery文本框联想补全自动完成插件,jQuery文本框联想补全自动完成插件,jQuery文本框联想补全自动完成插件,jQuery文本框联想补全自动完成插件,jQuery文本框联想补全自动完成插件,jQuery文本框联想补全自动完成...
JavaScript代码自动补全插件是开发过程中非常实用的工具,它们极大地提高了开发效率,通过智能提示和自动补全功能帮助程序员快速编写代码。本篇主要介绍两款JavaScript代码自动补全插件:Firebug和Firebug ...
总的来说,使用jQuery实现自动补全功能,需要结合DOM操作、事件处理、Ajax通信、数据处理及UI更新等多个方面。这既考验开发者的基本功,也是提升用户体验的重要手段。通过不断实践和优化,我们可以创建出高效、易用...
在邮箱自动补全插件中,我们可能需要使用这些方法来更新UI,展示匹配的邮箱列表。 其次,jQuery的事件处理能力是实现插件的关键。例如,我们可以使用`.on('input', function() {...})`监听输入框的输入事件。当用户...
jQuery时间自动完成插件是一种基于JavaScript库jQuery设计的交互式组件,主要用于提升用户在输入时间相关的数据时的体验。在Web应用中,特别是在预订、调度或时间管理等场景下,这种插件尤其有用,因为它可以帮助...
本实例将深入探讨如何使用jQuery实现一个基于Ajax的文本框自动补全功能,即"autocomplete"。Ajax(Asynchronous JavaScript and XML)技术允许在不刷新整个页面的情况下与服务器进行异步数据交换,使得用户体验更加...