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!