我遇到了在jquery ui自动完成中显示数据的一些问题,当我显示文本时,它不是utf-8编码的,尽管我的数据库和页面都使用utf-8。
此外,当我尝试以任何其他方式显示它时,它通常显示正确的编码。
jquery ui脚本。
<script type="text/javascript" charset="utf-8">
$(function() {
function log( message ) {
$( "<div>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$( "#items" ).autocomplete({
source: "getSurgestedItems.php",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
}).data("autocomplete")._renderItem = function(ul, item){
return $("<li>")
.data("item.autocomplete", item)
.append("<a>" + item.value + "<br>" + item.desc + "</a>")
.appendTo(ul);
};
});
</script>
获取项目的php脚本。
while ($row = $result->fetch_assoc()) {
$i++;
if(!$first){
$json .=',';
}
else{
$first = false;
}
$name = addslashes($row['name']);
$desc = mb_substr(addslashes($row['description']), 0, 60, 'UTF-8');
$desc .= '...';
$json .='{"value" : "'.$name.'",
"desc" : "'.$desc.'"}';
}
$json .=']';
echo $json;
就像我说的那样,我试图以我能想到的各种方式显示数据,并且只有自动完成功能才显示错误。
答案 0 :(得分:0)
SaschaM78评论让我看向正确的方向,在查看json_encode时,我发现它只适用于utf-8,这导致我尝试使用 mb_convert_encoding <将每个字符串编码为utf-8 / strong>,已经解决了我的问题,现在工作正常。
新的PHP代码。
$json = array();
while ($row = $result->fetch_assoc()) {
$name = mb_convert_encoding($row['name'], 'UTF-8');
$desc = mb_convert_encoding(substr($row['description'], 0, 60), 'UTF-8');
$desc .= '...';
$json[] = array('value' => $name, 'desc' => $desc);
}
echo json_encode($json);