我有一个ajax调用,它正在获取由php json_encode方法创建的值的JSON表示:
["Montérégie","Montréal - North Shore ","Montréal - South Shore"]
正在从控制器/ ajax_autocomplete'中收集这些值。通过jquery自动完成框。
$(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实体
答案 0 :(得分:0)
你应该使用:
示例:
var myData = ["Montérégie","Montréal - North Shore ","Montréal - South Shore"];
encodeURIComponent(JSON.stringify(myData))
答案 1 :(得分:0)
我已经通过将ajax输出包装到php'html_entity_decode'方法来修复了服务器端的问题。