2

我已经像这样设置了 jquery 的自动完成功能:

<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,要么自动完成显示整个数组,无论我在文本框中输入什么。

看起来是编码问题。。

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

谢谢..

4

3 回答 3

0

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

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

你可能想尝试的是这样的 -

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

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

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

请记住,exit()在您回显您的 JSON 数据后,以防止任何其他输出弄乱 JSON 格式。

于 2012-05-29T12:10:54.473 回答
0

我有一个类似的问题,我设法解决了它。有关详细信息,请参阅我的问题。简而言之:将 source: "autocomplete.php?file=", 更改为 source: "autocomplete.php?file= encodeURI ()",

于 2012-07-31T09:58:52.200 回答
0

试试这个 autocomplete.php:

<html>
    <head>
        <meta charset="utf8">
    </head>
    <body>
        <?php echo json_encode('["אא", "בבבאאא", "גגגאאא"]');?>
    </body>
</html>
于 2012-05-29T12:10:28.440 回答