2011-12-13 79 views
3

我用下面的代码来搜索一个Ajax文件与自动完成插件的查询编码的字符:jQuery的自动完成 - 结果表明

$("input.search_bar").autocomplete("/autocomplete/", { 
    scrollHeight: 300, 
    minChars: 3 
}); 

搜索结果就像HTML编码名称:

鲍勃的商店(真Bob%39s Store) 比尔店(真Bill%39s Shop) 等等

自动完成下拉列表显示了正确的HTML像这样:

Bob的商店 比尔的店

但是,当我选择其中一个结果,结果移动到输入框,输入字段显示转义值,像这样:

Bob%39s Store

怎么办我使用jQuery Autocomplete插件来格式化结果,以在选择结果时显示未转义的值?

我尝试了以下插件功能没有任何的运气:

$("input.search_bar").autocomplete("/autocomplete/", { 
    scrollHeight: 300, 
    minChars: 3, 
    formatResult: function(row) { 
     return unescape(row); 
    } 
}); 
+0

你可以使用一点PHP的使用了preg_replace() –

回答

1

试试这个代码,

$("input.search_bar").autocomplete("/autocomplete/", { 
    scrollHeight: 300, 
    minChars: 3, 
    formatResult: function(row) { 
     return $('<div/>').html(row).html(); 
    } 
}); 
0

尝试decodeURI()

$("input.search_bar").autocomplete("/autocomplete/", { 
    scrollHeight: 300, 
    minChars: 3, 
    formatResult: function(row) { 
     return decodeURI(row); 
    } 
}); 
+0

谢谢,但没有骰子... –

+0

你能挖掘到自动完成代码,看看他们使用逃脱变量有什么功能?如果它是一个标准函数,那么它应该有相反的,如果不是,那么它看起来像你创建一个:)。它看起来像unicode或ascii(39 =撇号) – themerlinproject

1

我有同样的问题。 JSON输出的源代码是一个JSP文件。

JSON使用示例显示使用单引号分隔我更改为双引号的建议条目。

直到我改用< c:out value =“....”>标记才简单地使用$ {....},它仍然不起作用。这解决了问题。 < c:out >标记会自动转义输出。

如果您不使用Java,请确保您用于生成JSON的函数不会自动编码/转义值。我没有注意到这一点,直到我用一个单引号击中了一个人的名字。