【问题标题】:Jquery autocomplete breaks on ampersand or single quoteJquery自动完成在&符号或单引号上中断
【发布时间】:2018-07-23 11:26:27
【问题描述】:

我正在尝试使用 JQuery 的自动完成功能如下:

<form name="form_data" action="#" method="post">
      <label for="plp_who">Pick Name:</label>
      <input type="text" name="plp_who" id="plp_who" class="form-control compact" value="">
</form>

 $('##plp_who').autocomplete({source: "/autocomplete/legacy_contact.cfm",minLength: 2});

"legacy_contact.cfm" 搜索数据库并返回JSON 格式的结果列表。当该列表包含单引号或 & 符号时,即使我转义字符,控件也无法响应。 “失败”是指控件没有给出任何返回结果的指示,尽管没有抛出 Javascript 错误。

例如:

[ {"label" : "Bob Michelucci, Rossi\'s Pop Up Marketplace", "value" : "9338"} ] 

失败

[ {"label" : "Bob Michelucci, Rossis Pop Up Marketplace", "value" : "9338"} ] 

成功

[ {"label" : "Brian Wright, R\&B Contracting \& Excavation", "value" : "8694"} ] 

失败

[ {"label" : "Brian Wright, R and B Contracting  and  Excavation", "value" : "8694"} ] 

成功

谁能建议可能出了什么问题?我不敢相信没有办法对这些字符进行编码以便它们不会破坏控制,但是尝试使用 & 或 ' 将它们转义是行不通的,因为它当然包含一个 & 符号。

【问题讨论】:

  • 您有没有找到解决办法?还在努力吗?

标签: javascript jquery json jquery-ui autocomplete


【解决方案1】:

我试图用“失败”的数据复制问题。似乎工作:

var myData = [{
  "label": "Bob Michelucci, Rossi\'s Pop Up Marketplace",
  "value": "9338"
}, {
  "label": "Brian Wright, R\&B Contracting \& Excavation",
  "value": "8694"
}];

$(function() {
  $('#plp_who').autocomplete({
    source: myData,
    minLength: 2
  });
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<form name="form_data" action="#" method="post">
  <label for="plp_who">Pick Name:</label>
  <input type="text" name="plp_who" id="plp_who" class="form-control compact" value="">
</form>

考虑到您是从 CFM 提取数据,您可以考虑通过控制台或网络工具查看来自 CFM 的实际响应。您也可以手动测试。使用类似“bo”的测试导航到您的页面:

/autocomplete/legacy_contact.cfm?term=bo

您应该收到一个对象结果数组。

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2011-12-15
    • 2016-05-16
    相关资源
    最近更新 更多