2009-06-11 5 views
0

J'ai un ajax autocomplete sur une page ASP.NET. Cela appelle une méthode d'un service Web qui renvoie certains codes postaux.Sys.Serialization.JavaScriptSerializer dans AJAX autocomplete

public string[] GetNames(string prefixText, int count, String contextKey) 
{ 
    prefixText = prefixText.Trim(); 
    XmlNodeList list; 
    List<string> names = new List<string>(); 
    if ((prefixText[0] >= '0') && (prefixText[0] <= '9')) 
    { 
     if ((contextKey == null) || (contextKey.Equals(""))) 
      list = cpsForAgences["groupe"]; 
     else 
      list = cpsForAgences[contextKey]; 
     int i=0; 
     foreach (System.Xml.XmlNode node in list) 
     { 
      if (node.InnerText.ToLower().StartsWith(prefixText)) 
      { 
       names.Add(node.InnerText); 
       if (++i >= count) 
        break; 
      } 
     } 
     names.Sort(); 
     return names.ToArray(); 
    } 
} 

Du côté client, quand il veut publier les réponses qu'elle appelle Sys.Serialization.JavaScriptSerializer.deserialize() avant:

try { 
var pair = Sys.Serialization.JavaScriptSerializer.deserialize('(' + completionItems[i] + ')');if (pair && pair.First) { 
text = pair.First;value = pair.Second;} else { 
text = pair;value = pair;} 
} 

Pour les codes postaux qui commencent par '0' Le résultat renvoyé par Sys.Serialization.JavaScriptSerializer.deserialize est différent de la valeur de completionItems [i] qui est exactement ma valeur. Pourquoi ce comportement? Comment puis-je éviter cela? Merci!

Répondre

1

J'essaierais d'utiliser un nombre entier au lieu d'une chaîne.

Questions connexes