Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2007, 12h20   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 745
Points : 127
Points : 127
Par défaut xml request ff pas ie

Bonjour,
je ne sais pas si je suis dans le bon forum etant donné que je melange js et asp m'enfin je test!

Ma problematique est d'aller chercher des info sur un serveur distant, que je rapatrie sous la forme d'xml!
donc j'envoie mes données sur une page de mon serveur qui lui se charge d'aller interroger une autre page et me renvoie mes données...
Page principale:

Code :
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
function AfficherDepartement( Culture, Enseigne, IdPays ) { 
 
 		//on efface tous pour recommencer
			document.getElementById('departement').style.visibility="visible";
			document.getElementById('btnValider').style.visibility="visible";
			 document.getElementById('SelectDep').style.visibility= 'visible';
		document.getElementById('dep').length=0;
		var noeud=document.getElementById('test');
		while (noeud.childNodes.length>0) {
  			noeud.removeChild(noeud.firstChild);
		};
	
      var xhr_object = null;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            xhr_object = new XMLHttpRequest();
  			   

            if (xhr_object.overrideMimeType) {
                xhr_object.overrideMimeType('text/xml');
                // Voir la note ci-dessous à propos de cette ligne
            }
        }
        else if (window.ActiveXObject) { // IE
            try {
                xhr_object = new ActiveXObject("Msxml2.XMLHTTP"); 
				
            }
            catch (e) {
                try {
                    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {}
            }
        }

        if (!xhr_object) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }

        
       //xhr_object.open("POST", "test.asp", true);
	   xhr_object.open("POST", "../test/testDepLocal.asp", true)
        	
       xhr_object.onreadystatechange = function() {
         if(xhr_object.readyState == 4 ){
		 	 if (xhr_object.status == 200 ){
        	alert(xhr_object.responseText);
			//eval(xhr_object.responseText); 
			//eval(xhr_object.responseXML);	  
			//alert(xhr_object.responseXML.getElementsByTagName("IDLANGUE")[0].nodeValue);
			//reponse = clean(xhr_object.responseXML.documentElement);	
			//var reponse = xhr_object.responseXML;
			//document.getElementById('text').value = xhr_object.responseXML.getElementsByTagName("IDLANGUE").item(0).firstChild.nodeValue; 
			//var xmldoc = xhr_object.responseXML;
			//var root_node = xmldoc.getElementsByTagName('IDLANGUE').item(0);
			//alert(root_node.firstChild.value);
			var nb = xhr_object.responseXML.getElementsByTagName("DEPARTEMENT").length;
			 alert (nb)
			for (cpt=0;cpt<nb;cpt++){
				document.getElementById('dep').options[cpt] = new Option(xhr_object.responseXML.getElementsByTagName("CODE").item(cpt).firstChild.nodeValue+" - "+xhr_object.responseXML.getElementsByTagName("LIBELLE").item(cpt).firstChild.nodeValue, xhr_object.responseXML.getElementsByTagName("IDDEPARTEMENT").item(cpt).firstChild.nodeValue);
        }
		 }
		 }
		 }
        
        xhr_object.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded; charset=iso-8859-15" );
       var data = "Culture=" + Culture + "&Enseigne=" + Enseigne + "&IdPays=" + IdPays;
           xhr_object.send(data);
        }

ensuite la page sur le meme serveur :
Code :
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
<%@LANGUAGE="VBSCRIPT"%>
  <% 
  Response.AddHeader "Content-Type","text/xml" 
  Dim Culture, IdEns, IdPays
Culture =  Rtrim(Request.Form("Culture"))
'response.write "culture" + Culture
IdEns = Request.Form("Enseigne") 
IdPays = Request.Form("IdPays")
 thisURL = "http://(...)/Site/test/testDepLewis.asp?Culture=" & Culture & "&Enseigne=" & IdEns & "&IdPays=" & IdPays 

 ' Création de l'objet XML
 Set GetConnection = CreateObject("MSXML2.ServerXMLHTTP")
 
 ' Connection à l'url spécifiée
 GetConnection.Open "GET", thisURL, false
 GetConnection.Send 

 ' ResponsePage contient la réponse du serveur	
if GetConnection.status = 200 and GetConnection.readyState = 4 then
 ReponsePage = GetConnection.responseXML.xml

' Nous écrivons alors le contenu de la variable
' afin d'afficher le contenu récupéré
 Response.write (ReponsePage)
 end if
 Set GetConnection = Nothing
 %>
et enfin ma page sur mon serveur distant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@LANGUAGE="VBSCRIPT"%>
<!-- #include File="../Includes/DS_OPEN_BASELEWIS.asp"-->
 
<%	 
Response.AddHeader "Content-Type","text/xml"
dim Culture, IdEns, IdPays
Culture = RTrim(Request.Querystring("Culture"))
IdEns = Request.Querystring("Enseigne")
IdPays = RTrim(Request.Querystring("IdPays"))
strReponse = "<?xml version='1.0' encoding='iso-8859-15'?><REPONSE><SERVICE>DEPARTEMENT</SERVICE><IDLANGUE>" & Culture & "</IDLANGUE><IDPAYS>" & IdPays & "</IDPAYS><IDENSEIGNE>" & IdEns & "</IDENSEIGNE><LISTEDEPARTEMENT>"
strQueryDep = "SELECT * FROM [vue-SOC-DepartementPaysEnseigne] WHERE IdLangue='"&Culture&"' and IdEnseigne="&IdEns&" and IdPays='"&IdPays&"' "
'strQueryDep = "SELECT * FROM [vue-SOC-DepartementPaysEnseigne] WHERE IdLangue='fr-FR' and IdEnseigne=2 and IdPays='fr'"
 
objRS4.Open strQueryDep
while not objRs4.EOF
	strReponse = strReponse + "<DEPARTEMENT><CODE>"&objRS4("Code")&"</CODE><LIBELLE>"&objRS4("Libelle")&"</LIBELLE><IDDEPARTEMENT>"&objRS4("IdDepartement")&"</IDDEPARTEMENT></DEPARTEMENT>"
	objRS4.movenext
wend
objRs4.Close
strReponse = strReponse +"</LISTEDEPARTEMENT></REPONSE>"
response.write (strReponse)
	'response.write( "document.getElementById('SelectPays').options['" & cpt & "'] = new Option('" & objRS("langue_id") & "','" & objRS("langue_lib") &"');")	
%>

et le truc c'est lorsque je fais
Code :
 alert(xhr_object.responseText);
que ce soit FireFox ou ie j'ai le xml!
par contre
la sous ie j'ai 0 et sous firefox j'ai le bon nombre!

j'avais deja eu ce genre de probleme et je l'avais resolu en rajoutant dans ma page sur le mm serveur
Code :
Response.AddHeader "Content-Type","text/xml" 
donc je l'ai refai mais toujours le mm probleme cette fois ci....

D'avance merci de lire ce post qui me parait demesurement long....
Alex35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 13h05   #2
Membre éprouvé
 
Avatar de malbaladejo
 
Inscription : avril 2002
Messages : 377
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : avril 2002
Messages : 377
Points : 477
Points : 477
J'ai eu le même genre de problème et en analysant le flux http avec fiddler j'ai vu qu'il y avait 2 content-type dans le header.
Le 2em Content-Type est bien modifié en mettant Response.AddHeader "Content-Type","text/xml" dans la page appelée.
Mais je n'ai jamais réussi à modifier le premier Content-Type.
Je pense qu'il est fixé par IIS.

Bref, selon que le navigateur prend le 1er ou le 2em Content-Type, ca marche ou ca ne marche pas, et bien sur IE et FF ne font pas la meme chose.
malbaladejo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 13h45   #3
Membre habitué
 
Inscription : octobre 2005
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 745
Points : 127
Points : 127
merci mais il n'y a donc pas moyen??

EDIT: car ce que je ne comprend vraiment pas c'est que j'ai eu le meme probleme juste avant et le faite de rajouter

Response.AddHeader "Content-Type","text/xml"

me l'a résolu du moins sous ie car sous firefox il fonctionnait de tte façon
Alex35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 14h35   #4
Membre habitué
 
Inscription : octobre 2005
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 745
Points : 127
Points : 127
bon en fait ce que j'en ai vu c'est que le probleme ne viendrait pas des headers car lorsque je modifie ma requete sur mon serveur distant de tel sorte qu'il ne me renvoie qu'un seul enregistrement ou deux pour construire mon flux xml, la cela fonctionne sous ie....
Par consequent y a t il une limitation sous ie de la taille des flux????
Alex35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 15h21   #5
Membre habitué
 
Inscription : octobre 2005
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 745
Points : 127
Points : 127
bon apres encore mure reflexion ce n'est absolument pas un probleme de taille de flux mais d'encodage, sous ie il connait pas un caractere, il n'affiche rien! ff lui remplace par un ?

siouplé quelqu'un peut il me renseigner la dessus?
Alex35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h15.


 
 
 
 
Partenaires

Hébergement Web