2012-11-19 4 views
1

J'ai le code suivant qui ne fonctionne que pour 70 articles. Au moment où j'ai ajouté le 71ème élément à la base de données, il ne fonctionne pas.PHP/jquery autocomplete ne se charge pas JSON_ERROR_UTF8

$('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 
       }); 

... 

Je peux voir que js_products_array détient toutes les valeurs, mais la fonction de saisie semi-automatique ne fonctionne pas. Au moment où je retire le 71ème élément de la BD, il fonctionne à nouveau.

Je suis étonné de ce qui cause cela. J'apprécierais de l'aide, des acclamations.

+0

quel est votre 71e article ???? –

+0

salut, c'est juste une chaîne. J'ai essayé plusieurs chaînes différentes, mais cela ne semble pas faire de différence. – greenpool

Répondre

0

Le code suivant a corrigé le problème: mysqli_set_charset($db, "utf8");

1

hmmm, essayez d'utiliser

json_last_error 


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

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

pour vérifier le problème

ou

limite le nombre d'enregistrements, it is easy to limit the number of records in database level

MISE À JOUR

essayer

dans votre fonction serveur autoComplete() avant de retourner le résultat à l'utilisation de vue cette fonction pour encode utf-8 du tableau

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

vous pouvez utiliser

json_encode($productArray);

+0

'ou limiter le nombre d'enregistrements' Je ne vois pas comment cela fonctionnera puisque j'ai besoin de tous les produits à charger afin qu'il soit disponible dans le tableau javascript 'js_products_array' pour la fonction de saisie semi-automatique. – greenpool

+0

selon votre recommandation j'ai couru 'json_last_error'. sur le 71ème enregistrement, il est retourné: 5 = JSON_ERROR_UTF8..essayant de comprendre ce que cela signifie ..ok, cela signifie que les caractères UTF-8 malformés, peut-être incorrectement codés. Des suggestions sur ce que je dois faire pour résoudre ce problème? Merci! – greenpool

+0

hmmmm, je vais essayer :) –