【问题标题】:PHP/jquery autocomplete not loading JSON_ERROR_UTF8PHP/jquery 自动完成未加载 JSON_ERROR_UTF8
【发布时间】:2012-11-19 06:20:10
【问题描述】:

以下代码仅适用于 70 个项目。当我将第 71 个项目添加到数据库时,它无法工作。

$('document').ready(function() {

      //autoComplete() returns a php array with all the products
    <?php $productArray = autoComplete();?>

    var js_products_array = <?php echo json_encode($productArray); ?>;

    var result;

     for(var i=0;i<js_products_array.length;i++){
        result += js_products_array[i]  + ', ';
    }
     //printing js_products_array 

    document.write(result);


    $( "#autocompleteID" ).autocomplete({
                    source: js_products_array
                 });

...

我可以看到js_products_array 包含所有值,但自动完成功能无法正常工作。当我从数据库中删除第 71 个项目时,它又可以工作了。

我不知道是什么原因造成的。非常感谢您的帮助,干杯。

【问题讨论】:

  • 你的第 71 件物品是什么????
  • 嗨,它只是一个字符串。我尝试了多个不同的字符串,但似乎没有什么不同。

标签: php jquery jquery-ui autocomplete


【解决方案1】:

嗯,试试看

json_last_error


var last_error = <?php echo json_last_error(); ?>;

http://php.net/manual/en/function.json-last-error.php

检查问题

限制记录数,it is easy to limit the number of records in database level

更新

试试

在您的服务器函数 autoComplete() 中,在将结果返回到视图之前使用此函数对数组进行 utf-8 编码

utf8_encode_deep($result_from_db);

function utf8_encode_deep(&$input) {
    if (is_string($input)) {
        $input = utf8_encode($input);
    } else if (is_array($input)) {
        foreach ($input as &$value) {
            utf8_encode_deep($value);
        }

        unset($value);
    } else if (is_object($input)) {
        $vars = array_keys(get_object_vars($input));

        foreach ($vars as $var) {
            utf8_encode_deep($input->$var);
        }
    }
}

那么你可以使用

json_encode($productArray);

【讨论】:

  • '或限制记录数' 我不知道这将如何工作,因为我需要加载所有产品,因此它可以在 javascript 数组 js_products_array 中用于自动完成功能.
  • 根据您的建议,我运行了json_last_error。在第 71 条记录中,它返回:5 = JSON_ERROR_UTF8..试图弄清楚这意味着什么..好吧,这意味着格式错误的 UTF-8 字符,可能编码不正确。关于我需要做些什么来解决这个问题的任何建议?谢谢!
  • 检查我的新更新。并查看php.net/manual/en/function.utf8-encode.php
【解决方案2】:

以下代码解决了这个问题:mysqli_set_charset($db, "utf8");

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2015-07-06
    • 1970-01-01
    • 2023-04-04
    • 2011-07-15
    • 2017-12-11
    相关资源
    最近更新 更多