【问题标题】:jQuery AutoComplete - Result shows encoded charactersjQuery AutoComplete - 结果显示编码字符
【发布时间】:2012-01-18 22:57:28
【问题描述】:

我正在使用以下代码在 ajax 文件中搜索带有自动完成插件的查询:

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

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

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

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

鲍勃的商店 比尔的商店

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

Bob%39s Store

如何使用 jQuery Autocomplete 插件格式化结果以在选择结果时显示未转义的值?

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

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

【问题讨论】:

  • 你可以在 preg_replace() 中使用一些 php

标签: jquery jquery-autocomplete


【解决方案1】:

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

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

直到我从使用 标记更改为仅使用 ${....} 之前,它仍然无法正常工作。这解决了问题。 标签会自动转义输出。

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

【讨论】:

    【解决方案2】:

    试试这个代码,

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

    【讨论】:

      【解决方案3】:

      试试decodeURI():

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

      【讨论】:

      • 你能深入研究自动完成代码,看看他们用什么函数来转义变量吗?如果它是一个标准功能,那么它应该有一个相反的功能,如果不是,那么看起来你可以创建一个:)。它看起来像 unicode 或 ascii(39=撇号)
      猜你喜欢
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多