jquery自动完成工作与旧版本的浏览器,但不是新的
jquery Autocomplete working with older versions of the browsers but not new ones?
这是我的自动完成的JSON数据
{ "list" : [ {
"genericIndicatorId" : 100,
"isActive" : false,
"maxValue" : null,
"minValue" : null,
"modificationDate" : 1283904000000,
"monotone" : 1,
"name":"Abbau",
"old_name" : "abbau_change_delete_imac",
"position" : 2,
"systemGraphics" : "000000",
"unitId" : 1,
"valueType" : 1,
"description" : "Abbau",
"weight" : 1
}]}
我写的代码是
$("#<portlet:namespace />giName").autocomplete({
source :`enter code here` function( request, response ) {
$.post(
"<%=AJAXgetGIs%>",
{
"<%=Constants.INDICATOR_NAME%>" : request.term,
"<%=Constants.SERVICE_ID%>" : <%=serviceId%>
},
function( data ) {
response( $.map( data.list, function( item ) {
//alert(item.name + " || " + item.genericIndicatorId);
item.value = item.name;
return item;
}));
},
"json"
);
},
minLength : 2
我使用jquery-ui-1.8.14.autocomplete.min.js插件自动完成我得到的问题是,它没有在新浏览器中显示所有匹配的结果。例如,如果i输入"an",其中should与"anzahl"关键字匹配,则firebug显示类似"字符串中错误的控制字符字面量"的错误。结果显示了字母"as,sa...."。任何帮助将不胜感激谢谢你
错误消息意味着您的JSON响应中有控制字符(例如'n, 't等)。根据ECMA262 5ed, JSON字符串中不允许使用换行符和其他控制字符。您可以通过转义或删除这些字符来很容易地修复它,无论是从PHP还是从Javascript。
在这里你可以找到一个如何从PHP修复它的例子,因为问题很可能来自json_encode(我假设你正在使用):http://codepad.org/Qu7uPt0E如您所见,json_encode不会转义'n,因此您必须在输出之前手动进行转义。
现在是关于旧浏览器的秘密。如果你看一下jQuery的parseJSON函数,你会注意到它首先尝试用浏览器内置的JSON对象解析字符串,如果没有找到,它就会执行(某种程度上的)eval(即使使用换行符也能工作)。所以它可能适用于你的Firefox <3.5或IE <它们没有原生JSON对象。此外,它可能与其他搜索词(如as等)一起工作,因为它们不包括具有控制字符的结果。>
添加到绘图者的正确答案
查看下载JSON2库https://github.com/douglascrockford/JSON-js这就是我解决这个问题的方法
- 为什么我的谷歌浏览器扩展程序在谷歌浏览器版本 41.0.2272.89 中不起作用
- 如何使用javascript确定登录用户的浏览器版本和IP地址
- 当前浏览器版本检测
- 较新的浏览器版本是否有办法确定是否已对.js文件进行了更改
- 使用 javascript 检测浏览器/版本与在服务器端检测
- 使用 jQuery 检测特定的浏览器版本
- 最低 IE9 浏览器要求和其他等效浏览器版本
- 谷歌浏览器版本 48 JavaScript 问题
- Javascript 如何检测 Opera 浏览器版本
- 如何在 Javascript 中获取 url 的哈希部分(新的浏览器版本)
- 根据浏览器版本删除所有样式
- 不同机器上相同浏览器版本的JavaScript行为不一致
- 如何获取/设置当前页面URL(适用于时空浏览器版本)
- Javascript-检测浏览器版本
- Cesium Sandcastle文件未在浏览器版本1.15中加载
- 自定义HTML属性的浏览器版本下限
- senamion无法正常工作,浏览器版本出现错误
- 使用JavaScript检测浏览器、浏览器版本和当前操作系统
- 不使用JavaScript的浏览器版本检测
- 检查我的网站在不同的浏览器版本的移动友好