Salut à tous,

J'ai une page Main.aspx qui crée 2 objets XmlHttp :

- un premier objet qui va transmettre le contenu d'un Textarea (dans lequel l'utilisateur peut coller une liste de noms de machines) à une page (Request.aspx) qui va parcourir AD pour trouver ces machines

- un second objet, qui va régulièrement demander à Request.aspx de lui renvoyer le pourcentage de traitement accompli pour rafraichir un progressbar.

Mon souci c'est que j'ai constamment mon status XmlHttp à 0, même quand j'interroge la page en vrai mode client/serveur (deux machines distinctes). Voici la partie javascript de la page Main.aspx :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
        <script type="text/javascript">
 
        // Create an array to hold the request objects
        var requestArray = new Array(); 
 
        // Au chargement de la page je positionne le curseur dans la zone de dépot de données
        function DoInit()
        {
            document.getElementById('depot').focus();        
        }
 
        function sendRequest(url,params,reqtype) 
        {
            // reqtype = 0 : transmission des valeurs
            // reqtype = 1 : demande de pourcentage
 
            if (typeof(requestArray[reqtype]) != 'undefined') // Objet déjà instancié, requête en cours
            {
                requestArray[reqtype].xmlhttp.abort();
            }
 
            requestArray[reqtype] = new newRequest(); // Create new request by calling newRequest function
            requestArray[reqtype].xmlhttp.open("POST",url,true); // Send Request and wait for change
            requestArray[reqtype].xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 
            // Execute function() when ready state changes
            requestArray[reqtype].xmlhttp.onreadystatechange = function() 
            {
                if (requestArray[reqtype].xmlhttp.readyState == 4) 
                {
                    if (requestArray[reqtype].xmlhttp.status == 200) 
                        { alert(requestArray[reqtype].xmlhttp.responseText); }
                    else 
                        { alert('Pas OK [' + reqtype + '] : status=' + requestArray[reqtype].xmlhttp.status); }
                }
            }
            if (params!='')
                { requestArray[reqtype].xmlhttp.send(params); }
            else
                { requestArray[reqtype].xmlhttp.send(null); }
 
            if (reqtype==1)
            {
                // Dans 5 secondes on demandera le pourcentage
                setTimeout("GetPercentage()", 4000);                
            }
        }
 
        // Create a new request
        function newRequest() 
        {
	        this.xmlhttp = false;
	        if (window.XMLHttpRequest) // For non-IE browsers
	        { 
		        this.xmlhttp = new XMLHttpRequest();
	        } 
	        else if (window.ActiveXObject) // For IE
	        { 
		        this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	        }
        }    
 
        function GetPercentage()
        {
            sendRequest('XmlHttp/Process.aspx','ipn=p026926&action=1',1);
        }
 
        function CheckAndSubmit()
        {
            if (document.getElementById('depot').value=="")
            {
                alert("Please input data in the left field before running extraction");
                document.getElementById('depot').focus();
            }   
            else
            {
                var dep = document.getElementById('depot').value;
                sendRequest('XmlHttp/Process.aspx','ipn=p026926&action=0&depot='+dep,0);
 
                // Dans 5 secondes on demandera le pourcentage
                setTimeout("GetPercentage()", 4000);                
            }
        }
 
        </script>
En gros toutes les 4 secondes, je prends un msgbox qui contient :

"Pas OK[1] : status = 0"

Est-ce que mon problème vient du fait que j'interroge la même page depuis deux objets Ajax distincts ? Dois-je créer une page distincte pour la consultation du pourcentage ? Je suis perdu ...

Si vous avez des pistes, je suis preneur ...

Merci à tous,

Olivier