2011-02-18 5 views
0

J'ai utilisé le code Simon Whatley's pour le plugin autocomplete. Maintenant, j'ai besoin d'aide pour analyser une donnée jSON. Voici mon code:analyse json dans jquery autocomplete

$("#country").autocomplete("data/country.cfm",{ 
     minChars:1, 
     delay:0, 
     autoFill:false, 
     matchSubset:false, 
     matchContains:1, 
     cacheLength:10, 
     selectOnly:1, 
     dataType: 'json', 
     extraParams: { 
       format: 'json' 
     }, 
     parse: function(data) { 
      var parsed = []; 
      for (var i = 0; i < data.length; i++) { 
       parsed[parsed.length] = { 
       data: data[i], 
       value: data[i].NAME, 
       result: data[i].NAME 
       }; 
      } 
      return parsed; 
     }, 
     formatItem: function(item) { 
      return item.NAME; 
     } 
    }); 

Par exemple, je reçois cela comme ma chaîne JSON:

[{"name":"country1"},{"name":"country2"},{"name":"country3"}] 

Ce que je veux obtenir comme résultats, bien sûr, sont les valeurs pays1, pays2, pays3. Cependant, ce que je reçois en ce moment dans la zone de texte lorsque je tape (par exemple je tape "cou") est "indéfini". Si je clique dessus, ce qui apparaît dans le champ text est la chaîne entière [{"name": "country1"}, {"name": "country2"}, {"name": "country3"}].

J'ai aussi essayé mais ceux-ci ne fonctionne toujours pas: jquery autocomplete, how to parse a json request with url info? jquery autocomplete with json response

Aide s'il vous plaît. Merci!

Répondre

0

Vous pouvez simplement utiliser simplement

var countries = JSON.parse(data); 

Puisque vous utilisez jQuery cependant, il est un peu plus sûr d'utiliser jQuery.parseJSON() dans le cas où le navigateur ne dispose pas d'un analyseur natif:

var countries = jQuery.parseJSON(data); 
+0

Salut Andrew! Merci pour la réponse. J'ai essayé votre suggestion, mais cela n'a pas fonctionné. C'est ce que je reçois. Quand je tape dans le champ de texte, j'obtiens "non défini" comme résultat de recherche. Quand je clique dessus, toute la chaîne json apparaît dans le champ. Quel pourrait être le problème? Merci. – danielle

+0

Salut! J'ai découvert que le plugin autocomplete de Simon s'attend à ce que les résultats soient sur des lignes individuelles et non au format jSON. Voir http://stackoverflow.com/questions/5100047/problem-with-parsing-json-in-jquery-autocomplete Merci! – danielle