1

J'essaie d'utiliser le plugin autocomplete pour jQuery (celui-ci http://docs.jquery.com/Plugins/Autocomplete). Mon serveur renvoie chaîne JSON, que je suis en train de traiter le client via le plugin de saisie semi-automatique « parse » et paramètres « formatItem », comme ceci:Le plugin jQuery AutoComplete ne fonctionne pas pour la réponse JSON (sValue.substring n'est pas une fonction)

$(document).ready(function() 
{ 
    $('.searchBox input.textbox').autocomplete('/DoSearch.aspx', 
    { 
     mustMatch: false, 
     autoFill: true, 
     minChars: 1, 
     dataType: 'json', 
     parse: function(data) 
     { 
      var array = new Array(); 
      for (var i = 0; i < data.length; i++) 
      { 
       array[array.length] = { data: data[i], value: data[i].ID, result: data[i].ID }; 
      } 
      return array; 
     }, 
     formatItem: function(row, i, n) 
     { 
      return row.ID + ': ' + row.Title; 
     } 
    }); 
}); 

Quand je lance ce je reçois un «sValue. la sous-chaîne n'est pas une erreur 'lancée dans Firebug. Cependant, si je colle des points d'arrêt sur la fonction formatItem et l'analyse, ils sont frappés comme prévu et contiennent des données valides, il semble.

Voici une copie exacte « n » coller du texte JSON qui est renvoyée à partir du serveur:

[{"ID":140177,"Title":"Food Handling","Code":"J01.576.423.200"},{"ID":140178,"Title":"Food Handling","Code":"J01.576.423.200"},{"ID":140179,"Title":"Brain Infarction","Code":"C10.228.140.300.301.200"},{"ID":140180,"Title":"Cerebral Hemorrhage","Code":"C10.228.140.300.535.200"},{"ID":140182,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140183,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140184,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140186,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140188,"Title":"Insulin","Code":"D06.472.610.575"},{"ID":140189,"Title":"Sulfonylurea Compounds","Code":"D02.886.590.795"}] 

S'il vous plaît aider, je l'ai déjà cherché Google et StackOverflow de l'aide, mais ne trouve pas Quelqu'un d'autre ayant cette erreur, bravo!

Répondre

1

Dammit !!!

J'ai trouvé la cause du problème. C'est parce que ma valeur d'ID dans ma chaîne JSON a été tapée comme un entier plutôt qu'une chaîne par exemple: {"ID":140177, au lieu de {"ID":"140177", et AutoComplete suppose que tout va être une chaîne.

je résolu le problème en enveloppant des guillemets autour de la valeur d'ID sur le serveur, ou tout simplement le convertir en une chaîne clientside dans la fonction « parse » comme ceci: value: data[i].ID + '', result: data[i].ID + ''