jQuery自动完成-结果显示编码字符



我使用以下代码搜索一个ajax文件的查询与自动完成插件:

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

搜索结果是HTML编码的名称,如:

Bob's Store(实际上是Bob%39s Store)比尔的商店(真的是Bill%39s Shop)等等…

自动完成下拉菜单显示正确的HTML,如下所示:

鲍勃的商店比尔的商店

但是当我选择其中一个结果并且结果移动到输入字段时,输入字段显示转义后的值,如下所示:

Bob%39s Store

我如何使用jQuery自动完成插件格式的结果,以显示未转义值时选择的结果?

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

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

试试这个代码,

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

我也遇到了同样的问题。JSON输出的源是一个JSP文件。

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

它仍然不工作,直到我从使用标记为简单地使用${....}。这就解决了问题。& lt; c: out>标签自动转义输出

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

try decodeURI():

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

最新更新