gpt4 book ai didi

php - jquery Autocomplete 使用旧版本的浏览器而不是新版本的浏览器?

转载 作者:可可西里 更新时间:2023-10-31 23:08:17 24 4
gpt4 key购买 nike

这是我自动完成的 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 插件来自动完成我遇到的问题是它没有在新浏览器中显示所有匹配的结果。例如,如果我键入 "an",其中应该匹配 "anzahl" 关键字,fire bug 会显示错误,如 "bad control character literal in a字符串”。结果显示字母“as,sa ....”。任何帮助都会得到帮助谢谢

最佳答案

错误消息意味着您的 JSON 响应中有控制字符(如\n、\t 等)。根据 ECMA262 5ed,JSON 字符串中不允许使用换行符和其他控制字符。您可以通过从 PHP 或 Javascript 中转义或删除这些字符来相当轻松地修复它。

在这里您可以找到一个示例,说明如何从 PHP 修复它,因为问题很可能来自 json_encode(我假设您正在使用它):http://codepad.org/Qu7uPt0E如您所见,json_encode 不会对\n 进行转义,因此您必须在输出之前手动进行转义。

现在是与旧浏览器相关的谜团。如果您查看 jQuery 的 parseJSON 函数,您会注意到它首先尝试使用浏览器的内置 JSON 对象解析字符串,如果没有找到,它只会执行(某种)eval(即使使用换行)。所以它可能适用于没有 native JSON 对象的 Firefox < 3.5 或 IE < 8。此外,它可能适用于其他搜索词(如 as 等),因为它们不包含具有控制字符的结果。

关于php - jquery Autocomplete 使用旧版本的浏览器而不是新版本的浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7646620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com