1

70 個のアイテムに対してのみ機能する次のコードがあります。71 番目の項目を DB に追加した瞬間、機能しなくなりました。

$('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 ますが、オートコンプリート機能は機能しません。DBから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 に答える