使用utf8希伯来字母的jquery自动完成

时间:2012-05-29 12:04:40

标签: php utf-8 jquery-autocomplete

我已经设置了jquery的autocomlete,如下所示:

<script>
$(document).ready(function() {
     $( "input#Filter" ).autocomplete({
            source: ["בזן", "גאבה", "אוהד", "יוסי", "שחקן"], 
            minLength: 2,
        });
});
</script>

它有效!

但是我需要从另一个php文件中获取数据,所以我使用了这个

<script>
$(document).ready(function() {
     $( "input#Filter" ).autocomplete({
            source: "autocomplete.php?file=<?echo $newest?>", 
            minLength: 2,
        });
});
</script>

让我们说autocomplete.php就像

一样简单
header("Content-type: application/json; charset=utf-8");
echo json_encode('["אא", "בבבאאא", "גגגאאא"]');
// tried also echo '["אא", "בבבאאא", "גגגאאא"]';
没有用。在各种论坛中寻找了许多解决方案。 要么它显示为jibrish,要么autocompletes显示整个数组,无论我放在文本框中。

看起来这是一个编码问题..

我的两个文件都保存为'ANSI AS UTF-8'。

感谢..

3 个答案:

答案 0 :(得分:0)

试试这个autocomplete.php:

<html>
    <head>
        <meta charset="utf8">
    </head>
    <body>
        <?php echo json_encode('["אא", "בבבאאא", "גגגאאא"]');?>
    </body>
</html>

答案 1 :(得分:0)

  

首先,我对这个自动完成插件没有多少经验 - 这些只是我头脑中的一些想法......

我认为这里的问题是你的PHP文件正在返回一个JSON对象,实际上autcomplete插件需要一个JavaScript数组。我假设这是因为您传递给插件的source参数...它只是一个正常的数组......

您可能想要尝试的是这样的事情 -

header("Content-Type: text/plain; charset=utf-8");
echo '["אא", "בבבאאא", "גגגאאא"]';
exit();

如果这不是问题,并且autcomplete插件确实想要获得JSON响应,那么您可以尝试将数据包装在普通的PHP数组中,然后再编码为JSON -

header("Content-type: application/json; charset=utf-8");
$names = array(
  'ליאור',
  'עידו',
  'בן'
);
echo json_encode($names);
exit();

在回显JSON数据后请记住exit()以防止任何其他输出混淆JSON格式。

答案 2 :(得分:0)

我有类似的问题,我设法解决了它。有关详细信息,请参阅我的question。 简而言之:改变     来源:“autocomplete.php?file =”, 至     来源:“autocomplete.php?file = encodeURI ()”,