Javascript jQuery自动完成特殊字符

Javascript jQuery自动完成特殊字符,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我有一个ajax调用,它获取由php JSON_encode方法创建的值的JSON表示: ["Montérégie","Montréal - North Shore ","Montréal - South Shore"] 这些值由jquery自动完成框从“控制器/ajax\u自动完成”中获取 $(function(){ $("#regions").autocomplete({ source: "controller/ajax_aut

我有一个ajax调用,它获取由php JSON_encode方法创建的值的JSON表示:

["Montérégie","Montréal - North Shore ","Montréal - South Shore"]
这些值由jquery自动完成框从“控制器/ajax\u自动完成”中获取

  $(function(){   $("#regions").autocomplete({               
            source: "controller/ajax_autocomplete",
            contentType: "application/json; charset=utf-8"
}                                                          
            });            
    }); 
所有的值都被jQueryUI的UI自动完成正确地拾取,但是特殊字符丢失了。 蒙特勒阿尔成为蒙特勒和埃库特;阿尔山、雷吉山成为埃库特山;ré;吉

在http传输过程中,这些特殊字符肯定会被销毁,因为如果我手动将JSON表复制到jquery函数中,问题就会消失

    $(function(){   $("#regions").autocomplete({               
            contentType: "application/json; charset=utf-8",
            source: "["Montérégie","Montréal - North Shore ","Montréal - South Shore"]"
}                                                          
            });            
    }); 
以编程方式解码html实体适用于文本框值,但建议列表仍使用html实体替换特殊字符

$(function(){   $("#regions").autocomplete({              
        source: "controller/ajax_autocomplete",
        select: function( event, ui ) {
                event.preventDefault();
                this.value = $('<div />').html(ui.item.value).text();
        }                                                                                                                                                                                            
        });            
});   
解决方案是解码建议列表中的HTML实体,您应该使用:

例如:

var myData = ["Montérégie","Montréal - North Shore ","Montréal - South Shore"];
encodeURIComponent(JSON.stringify(myData))

我通过将ajax输出包装到php“html\u entity\u decode”方法解决了服务器端的问题。

您的示例使用的是本地数组,我在描述中已经提到,在这种情况下,自动完成可以使用。问题是,在从服务器到客户端的http传输过程中,特殊字符被编码到html实体中。请查看这是否有帮助