problème jQuery dans Internet Explorer IE 8

J'ai défini une variable globale, $ category_list, qui est un set de noms de catégories.

Dans le pied de page, j'ai:

<?php if ( isset($category_list) ): ?> <script type="text/javascript"> var wordlist = [ <?php foreach ($category_list as $row) { echo '"' . $row->name . '", '; } ?> ]; </script> <?php endif ?> 

J'ai un file .js externe avec le code suivant:

 jQuery( ".cats" ).autocomplete({ source: function(req, responseFn) { var matches = new Array(); var needle = req.term.toLowerCase(); var len = wordlist.length; for(i = 0; i < len; ++i) { var haystack = wordlist[i].toLowerCase(); if(haystack.indexOf(needle) == 0 || haystack.indexOf(" " + needle) != -1) { matches.push(wordlist[i]); } } responseFn( matches ); } }); 

Une erreur se produit dans IE8 afin que le drop down menu ne fonctionne pas: la list des wordlist[...] is null or not an object

Vous ne savez pas comment vous contourner cela, la list déroulante des noms de catégories fonctionne bien dans IE 9, Firefox et Chrome, mais ce n'est pas sur IE8, touchant environ 50% des users d'IE. J'utilise le framework Codeigniter. J'ai essayé de charger le script de bas de page avant le file externe mais pas de joie.

Beaucoup d'amour pour toute aide <3

IE8 n'aime pas le trailing , dans les définitions littérales du tableau. Vous devrez refacher votre code pour ne pas en laisser un.

 <?php $rows = array(); foreach ($category_list as $row) { $rows[] = '"' . $row->name . '"'; } echo implode(',', $rows); ?> 

ou

 var wordlist = <?php $rows = array(); foreach ($category_list as $row) { $rows[] = '"' . $row->name . '"'; } echo json_encode($rows); ?>;