我正在使用JQuery Type提前功能,通过使用用户输入的三个字符来匹配并显示雇主姓名的建议。但是如果用户输入撇号('),因为雇主的名字有时会包含撇号(例如:O' lando),这个函数不起作用,请让我知道如何在这个jquery函数中处理撇号。
$('.mypage').typeahead({
minLength: 3,
items: 'all',
source: function (request, response) {
$.ajax({
url: "/AutoCom.asmx/MatchEmployers",
data: "{ 'employerName': '" + request + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) { --------
答案 0 :(得分:0)
今天,我碰到了这个" bug" (不确定这一点)。我试着在某些方面,但唯一似乎有用的是使用等效的html ascii代码,在我的情况下'对于简单的"直引号/撇号"。 我在php中只写了几行,以避免在我的json中的标题位置出现这个撇号。 使用数组的typeahead脚本(在我的情况下,php编写相应的javascript数组)也可以正常工作。
答案 1 :(得分:0)
您似乎正在尝试将JSON发送到您的AJAX网址,但您正在构建要手动发送的字符串。您只是将字符串连接在一起,这样如果您的请求中有引号(例如" O' lando"),它最终会出现类似
的内容data: "{ 'employerName': 'O'lando' }",
哪些因为引号不对而无法正常工作。
当您想要构建JSON以发送到某个地方时,请不要尝试自己构建它,让浏览器为您执行此操作。你想要这样的东西:
data: JSON.stringify({ 'employerName': request }),
JSON.stringify
函数接受一个JavaScript对象并处理它所需的所有转义,使其成为纯JSON字符串,然后可以在Web请求中使用,或者在需要的任何地方使用它作为字符串而不是字符串对象