1

我有以下代码,仅适用于 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 个项目时,它再次工作。

我很困惑这是什么原因造成的。会很感激一些帮助,干杯。

4

2 回答 2

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);

于 2012-11-19T06:43:49.773 回答
0

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

于 2012-11-19T08:41:14.687 回答