【问题标题】:jquery autocomplete with utf8 hebrew letters带有utf8希伯来字母的jquery自动完成
【发布时间】:2012-05-29 12:04:39
【问题描述】:

我已经像这样设置了 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”。

谢谢..

【问题讨论】:

    标签: php utf-8 jquery-autocomplete


    【解决方案1】:

    试试这个 autocomplete.php:

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

    【讨论】:

    • 没用。回复我这个: "[\"\u05d0\u05d0\", \"\u05d1\u05d1\u05d1\u05d0\u05d0\u05d0 \", \"\u05d2\u05d2\u05d2\u05d0\u05d0\u05d0\"]"
    【解决方案2】:

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

    我认为这里的问题是您的 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();
    

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

    【讨论】:

    • 感谢 lix,但它没有用。他们都在将值传递给自动完成功能,但自动完成功能无法识别要显示和不显示的内容(当我按照我给出的第一个示例传递值时,它确实成功了。)
    • 不显示是什么意思?您通过 PHP 文件发送它的原因是您可以只返回正确的值...插件将显示您从 AJAX 调用返回的所有结果...
    • 是的,当它还显示所有英文值时才注意到它......但是我应该如何每次发送文本值? --- 尝试过 -> 来源:“autocomplete.php?file=&filter="+ $( "input#Filter" ).text(),没有运气...
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多