- 浏览: 123435 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wellba:
完美的解决了问题,谢谢分享
Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): -
u013641752:
添加上去了,但是结果好像一样的,也是删除不了呢。而且是只有删除 ...
Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): -
zl584521:
NAMES.DIRECTORY_PATH= (TNSNAMES ...
PLSQL连接ORACLE详解 -
hezonghuan:
谢了!
Eclipse 中Tomcat 启动报错:java.net.SocketException: select failed -
zhonglijunyi:
学习中,但是PL/SQL连接碰到很多问题啊
PLSQL连接ORACLE详解
使jQuery autocomplete支持中文搜索
- 博客分类:
- java
- jQuery
- JavaScript
附件里是修改过的 jquery.autocomplete.js(其实只是escape,unescape下输入框值)
页面代码:
后台代码:
后台把解密了两次,其解密的方法是:
页面代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script> <script type="text/javascript" src="js/jquery.autocomplete.js"></script> <link rel="stylesheet" href="style/jquery.autocomplete.css" type="text/css" media="screen, projection"/> <script type="text/javascript"> $(function(){ $("#txtSubSysInfo").autocomplete("/case/task/getSubSysInfo.shtml", { minChars: 0, width: 400, mustMatch: true, autoFill: false, multiple: true, multipleSeparator: "; ", parse: function(data){ var parsed = []; var rows = data; for (var i=0; i < rows.length; i++) { var row = rows[i]; if (row) { parsed[parsed.length] = { data: row, value: row.ID, result: this.formatResult(row) }; } } return parsed; }, formatItem: function(row, i, max) { return "[" + row.ID + "]" + row.ENNAME + "(" + row.CNNAME + ")"; }, formatResult: function(row) { return row.CNNAME; } }).result(function(e, data, value){ $('#hidSubSysInfo').val(value); }); }); </script> </head> <body> <input style="width: 600px;" id="txtSubSysInfo" name="txtSubSysInfo"/></br> <input style="width: 600px;" id="hidSubSysInfo" name="hidSubSysInfo"/> </body> </html>
后台代码:
public ModelAndView getSubSysInfo(HttpServletRequest request ,HttpServletResponse response) throws Exception{ String queryString = request.getParameter("q"); Writer out = null; try { response.setContentType("text/json; charset=gbk"); out = response.getWriter(); queryString = queryString == null ? "": queryString; queryString = DateUtil.unescape(DateUtil.unescape(queryString)); int index = queryString.lastIndexOf(";")+1; queryString = queryString.substring(index == -1 ? 0 : index).trim(); List<Map> sysList = this.serviceInstance.getSubSysInfo(queryString.toUpperCase()); String sysJson = JSONArray.fromObject(sysList).toString(); out.write(sysJson); } catch (Exception e) { log.error("获取子系统异常", e); JSONObject jsonObject = new JSONObject(); jsonObject.element("errorMsg", e.getMessage()); out.write(JSONArray.fromObject(jsonObject).toString()); }finally{ out.flush(); out.close(); } return null; }
后台把解密了两次,其解密的方法是:
private final static String[] hex = { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" }; private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F }; public static String escape(String s) { StringBuffer sbuf = new StringBuffer(); int len = s.length(); for (int i = 0; i < len; i++) { int ch = s.charAt(i); if (ch == ' ') { // space : map to '+' sbuf.append('+'); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '@' || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch <= 0x007F) { // other ASCII : map to %XX sbuf.append('%'); sbuf.append(hex[ch]); } else { // unicode : map to %uXXXX sbuf.append('%'); sbuf.append('u'); sbuf.append(hex[(ch >>> 8)]); sbuf.append(hex[(0x00FF & ch)]); } } return sbuf.toString(); } public static String unescape(String s) { StringBuffer sbuf = new StringBuffer(); int i = 0; int len = s.length(); while (i < len) { int ch = s.charAt(i); if (ch == '+') { // + : map to ' ' sbuf.append('+'); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '.' || ch == '!' || ch == '@' || ch == '~' || ch == '*' || ch == '\'' || ch == '/' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch == '%') { int cint = 0; if ('u' != s.charAt(i + 1)) { // %XX : map to ascii(XX) cint = (cint << 4) | val[s.charAt(i + 1)]; cint = (cint << 4) | val[s.charAt(i + 2)]; i += 2; } else { // %uXXXX : map to unicode(XXXX) cint = (cint << 4) | val[s.charAt(i + 2)]; cint = (cint << 4) | val[s.charAt(i + 3)]; cint = (cint << 4) | val[s.charAt(i + 4)]; cint = (cint << 4) | val[s.charAt(i + 5)]; i += 5; } sbuf.append((char) cint); } i++; } return sbuf.toString(); }
- jquery.autocomplete.zip (7.6 KB)
- 下载次数: 36
发表评论
-
模仿QQ邮箱,邮箱地址输入框
2014-03-21 16:29 1346加入我上一篇修改过的jQuery.autocomplete.j ... -
WEB开发中遇到的问题
2013-08-26 16:12 9011. Failed to load or instantiat ... -
java中拷贝删除文件或目录,
2013-08-20 08:38 818// 复制文件 public stati ... -
根据svn的ChangeLog打出更新包
2013-08-15 17:24 2107ChangeLog.txt r628 | zhoulz | ... -
简单又好用的Tomcat 页面权限控制
2013-08-08 09:02 1256不废话,就2个配置文件,直接上代码。 web.xml &l ... -
hibernate中OneToMany双向关联,不生成连接表,级联增删改配置
2013-04-08 15:29 6425One方配置: @OneToMany(fetch = Fet ... -
在jsp页面中,巧用struts2中的标签
2013-03-06 16:36 10651、set标签 <s:iterator value ... -
ibatis中 #和$的区别
2012-09-26 15:00 846据我理解是这样的 #是把传入的数据做类型转换,如果转换后拼接 ... -
a different object with the same identifier value was already associated with th
2012-09-26 11:13 1555原因:在保存(更新)对象newObj之前,已经通过id用get ... -
jQuery 中的center居中方法
2012-07-30 10:14 1219jQuery.fn.center = functio ... -
object references an unsaved transient instance - save the transient instance be
2012-07-27 11:16 1540今天在重构公司一个老项目的时候,遇到了这个异常,记录下: 很明 ... -
IE下iframe内的文本框无法聚焦输入
2012-07-18 13:40 1766前些天在制作一个 jQuery 插件 Openbox 的时候, ... -
spring+ehcache应用
2012-06-20 14:14 4053首页发现篇,虽然跟我的不一样,但思路大致相同,大家可以参考下咯 ... -
(apache)mod_proxy 和 mod_rewrite实现js跨域
2011-12-15 15:08 3197项目中用到了,于是搞了几多时间,还是没太明白,只是会基本用法, ... -
关于正则表达式,搜索指定字符串,类似like查询
2011-12-08 10:31 1693需求: 1、搜索带有关键字的数组字符串,有点类型DB中的lik ...
相关推荐
jquery-autocomplete搜索框自动完成的中文文档,上手快,轻便,功能强大
jquery autocomplete下载.rar
在输入页面利用JQuery获取用户输入,然后通过AJAX异步发送到处理页面,...若是jquery autoComplete组件则只要将从后台获取的数据放入autocomplete( url or data, [options] )第一个参数中就行,第二个参数可加可不加。
Jquery AutoComplete
jquery autocomplete.js 是一款优秀的开源JS,支持自动完成,不过如果是中文失效。原因是由于中文编码不一致引起的,修改源文件中AJAX请求中的编码,加上escape编码后,在后台用Server.URLDecode解码后,则中文也...
jquery.autocomplete.js 、jquery.autocomplete.css
jquery autocomplete 动态补全例子支持中文 ajax传递json数据 文件里有json数据拼接
jQuery plugin: Autocomplete 参数及实例 官网:jQuery plugin: Autocomplete 此插件依赖于 jquery 1.2.6 --- jquery 1.8.3 转自:http://www.cnblogs.com/duanhuajian/p/3398904.html
JQuery autocomplete ajax分页,对源码稍微修改了下
jQuery Autocomplete,百度搜索框提示效果。
Jquery autocomplete插件使用
jquery-autocomplete 可用
asp.net 仿google 只能搜索提示,提供源码,自带数据库。
jquery autocomplete 所需js文件及样式。 实现仿百度输入查询下拉功能。
使用Jquery AutoComplete 插件来做自动填充功能,包含本地数组,后台数据等情况
jquery自动补全插件(jquery autocomplete) 内包含使用说明,前台+后台
NULL 博文链接:https://zhaoaiqing.iteye.com/blog/333869
jQuery autocomplete 自动加载
利用Jquery.AutoComplete插件及微软提供的ChineseConverter.dll实现汉字、拼音、简拼模糊搜索
jquery autocomplete官方版(源代码+示例) 自动补充功能非常实用