繁体   English   中英

jQuery自动完成特殊字符

[英]jQuery autocomplete special characters

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

["Montérégie","Montréal - North Shore ","Montréal - South Shore"]

这些值是通过jquery自动完成框从'controller / ajax_autocomplete'中获取的。

  $(function(){   $("#regions").autocomplete({               
            source: "controller/ajax_autocomplete",
            contentType: "application/json; charset=utf-8"
}                                                          
            });            
    }); 

所有的值都是由jQuery UI的ui-autocomplete完成的,但是特殊的字符丢失了。 Montréal become Montréal, Montérégie become Montérégie ......

在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_entity_decode'方法中修复了服务器端的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM