Jers自动完成中断符号或单引号

时间:2018-02-13 06:45:20

标签: javascript jquery json jquery-ui autocomplete

我正在尝试使用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格式的结果列表。当该列表包含单引号或符号时,即使我转义该字符,控件也无法响应。通过&#34;失败&#34;我的意思是控件没有给出任何返回结果的指示,但没有抛出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"} ] 

成功

有人可以建议可能出现的问题吗?我无法相信没有办法对这些角色进行编码,这样他们就不会破坏控制,而是试图使用&amp; amp;或者&#39;当然,它不会起作用,因为它包含一个&符号。

1 个答案:

答案 0 :(得分:0)

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

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

您应该收到一系列对象结果。