[英]utf-8 problem in using jquery autocomplete tags
嘿伙伴。 最近我使用了jquery自动完成标签
http://devthought.com/projects/jquery/textboxlist/
除了utf-8标签建议外,一切都很顺利,建议只提供英文标签
我猜测脚本行出了问题,它可以正常使用英文标签,但不能使用像波斯语这样的多字节语言
TextboxList.Autocomplete.js中的第212行可能是罪魁祸首:
regexp = new RegExp('\\b' + escapeRegExp(search), insensitive ? 'i' : '');
那是在单词边界之后寻找给定的字符。 但是单词边界依赖于对单词字符的识别,而JavaScript RegExp的单词字符列表只是ASCII字母数字加_
。 因为RegExp对Unicode一无所知,所以在单词以非ASCII字符开头的地方不起作用。
您可以尝试删除\\\\b
在这种情况下,它将匹配任何位于其中任何位置的给定字符串的建议,而不仅仅是在单词的开头。
您的HTTP标头错误。 它应该是:
header('Content-Type: application/json; charset=UTF-8');
您还可以缩短代码并使用MySQL进行排序:
$sql = 'SELECT `tag` FROM `'.$prefix.'_tags` ORDER BY `tag`';
$result = $db->sql_query($sql);
if (!$result) {
header($_SERVER['SERVER_PROTOCOL'].' 500 Internal Server Error');
echo mysql_error();
exit;
}
$response = array();
$i = 0;
while ($row = $db->sql_fetchrow($result)) {
$response[] = array($i++, $row);
}
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($response);
你的内容类型标题有点错误。 首先,它应该是content-type:something; charset=something
content-type:something; charset=something
,即content-type:text/html; charset=utf-8
content-type:text/html; charset=utf-8
。
但实际上建议使用内容类型的application/json
,请参阅此处什么是正确的JSON内容类型?
所以,你可以这样做
header("Content-Type:application/json; charset=UTF-8");
TextboxList.Autocomplete.js中的第215行可能是罪魁祸首:
if (regexp.test(values[i][1])) newvals.push(values[i]);
把它转交给
if (values[i][1].indexOf(escapeRegExp(search)) != -1) newvals.push(values[i]);
Bobince(第一个答案)对,问题在第212行,但解决了它可以在第215行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.