如何处理对typeahead jquery函数

时间:2016-04-25 19:16:25

标签: jquery json

我正在使用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) { --------

2 个答案:

答案 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请求中使用,或者在需要的任何地方使用它作为字符串而不是字符串对象