Jquery UI自动完成重音符号不适用于斯拉夫字符

时间:2016-01-12 08:36:59

标签: php jquery mysql jquery-ui

我制作了mysql数据库。我在其中存储了值。它们都是utf8_unicode_ci。

我创建了jquery-ui自动完成字段,从db读取值。

$(function() {
var names = <?php echo json_encode($rows); ?>;

var accentMap = {
  "š": "s",
  "đ": "d",
  "č": "c",
  "ć": "c",
  "ž": "z",
  "Š": "S",
  "Đ": "D",
  "Č": "C",
  "Ć": "C",
  "Ž": "Z"
};
var normalize = function( term ) {
  var ret = "";
  for ( var i = 0; i < term.length; i++ ) {
    ret += accentMap[ term.charAt(i) ] || term.charAt(i);
  }
  return ret;
};

$( "#field1" ).autocomplete({
  source: function( request, response ) {
    var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
    response( $.grep( names, function( value ) {
      value = value.label || value.value || value;
      return matcher.test( value ) || matcher.test( normalize( value ) );
    }) );
  }
});
});

当我从重音地图插入一些字符的值时,我的自动完成功能停止工作。当我用特殊字符删除值时,一切正常。 我在控制台上遇到错误,我的var名称是 - 意外的令牌。如果我删除带有特殊字符的值,则错误不再存在。

有人有这个问题吗?

编辑:

$ row的$ var_dump显示了这个:

 array (size=8)
 0 => string 'Split' (length=5)
 1 => string 'Hajduk' (length=6)
 2 => string 'Monkey' (length=6)
 3 => string 'First' (length=5)
 4 => string 'Zagreb' (length=6)
 5 => string 'Table' (length=5)
 6 => string 'Computer' (length=8)
 7 => string '�ibenik' (length=7)

如果我回显$行,我会得到这个:

Array 

如果删除第7行,一切正常。

这是我的php:

    global $rows;
    require_once ('database_connect.php');
    $query = 'SELECT words FROM tbl';
    $result = mysqli_query($dbc, $query);
    $rows = array();
    while ($r = mysqli_fetch_assoc($result)) {
        $rows[] = $r['words'];
    }

还有。在我的数据库中,所有字符都显示正确。

1 个答案:

答案 0 :(得分:0)

问题是没有meta charset utf8。我添加了它,现在一切正常。