Bonjour, j'ai réalisé un petit script sous AJAX/asp.net/csharp.
Je fais de la saisie automatique dans une textbox qui m'affiche un select avec le nom des communes recherchées, mais lorsque je tape mes lettres trop rapidement, la page internet plante.
Je ne comprends pas pourquoi et je n'ai pas la compétence pour.
Est ce que quelqu'un pourrait m'aider?

Voici mon code JAVASCRIPT:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
function dotest2(e) 
{   
    var commune_saisie = document.getElementById("commune_saisie");
 
    //action sur la flèche du bas( qui correspont au keycode numéro 40 )...
        if( e.keyCode == 40 )
            document.forms[0].elements["cummune_a_trouvee"].focus();
        else if( commune_saisie.value.length > 0 ) 
            setTimeout(commune, 200);
}
function commune()
{
    var commune_saisie = document.getElementById("commune_saisie");
 
    masqueFleche();
    document.getElementById("liste_vide").style.display = "none";
    document.getElementById("commentaire").value = "";
    document.getElementById("resultat").value = "";
    document.getElementById("resultat2").value = "";    
 
    if(commune_saisie.value.length>1)
    {
        WebSite1.Methods.retourne_communes_recherchee(commune_saisie.value, commune_callback);
    }
}
function commune_callback(res)
{
    var commune_recherchee = document.getElementById("commune_recherchee");
    var s = "";
 
    if(res!=null)
    {
        for(var i=0;i<res.value.length;i++)
        {
            s = s + "<option value='"+ res.value[i] +"'>"+ res.value[i] +"</option>";
        }  
    }
 
    s = '<select class="case" onChange="selection_commune_recherche();" id="cummune_a_trouvee" name="cummune_a_trouvee" size=6 style=width:260px>' + s + '</select>';
    commune_recherchee.innerHTML = s;
    //alert(s);
}
Voici mon code aspx:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<tr><td height="20" class="tableau">
<div id="commune_recherchee"></div>
<select class="case" id="liste_vide" size="6" style="width:260px;" visible="true"></select>
</td></tr>
Voici ma méthode AJAX:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)]
        public string[] retourne_communes_recherchee(string val)
        {
            List<string> listecommune = new List<string>();
 
            //lock????
            lock (syncroot)
            {
                try
                {
                    websamu.PECSAMU_COMMUNE[] tableau_commune = null;
 
                    if (HttpContext.Current.Session != null && HttpContext.Current.Session["__tableau_commune"] != null)
                    {
                        tableau_commune = (websamu.PECSAMU_COMMUNE[])HttpContext.Current.Session["__tableau_commune"];
                    }
 
                    if (tableau_commune != null)
                    {
                        foreach (websamu.PECSAMU_COMMUNE commune in tableau_commune)
                        {
                            if (commune.Commune.IndexOf(val, StringComparison.InvariantCultureIgnoreCase) > -1 || commune.Commune.Replace("â", "a").Replace("Â", "a").Replace("ô", "o").Replace("Ô", "o").Replace("û", "u").Replace("Û", "u").Replace("é", "e").Replace("É", "e").Replace("è", "e").Replace("È", "e").IndexOf(val, StringComparison.InvariantCultureIgnoreCase) > -1)
                            {
                                string commune_inseree = commune.Commune.Replace("'","_");
                                listecommune.Add(commune_inseree);
                            }
                        }
                    }
                }
                catch
                {
                }
            }
 
            return listecommune.ToArray();
        }
Voilà donc ça plante et je ne vois vraiment pas, donc si vous pourriez me venir en aide ce serait gentil