IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Requ�teHTTP : utiliser XMLHttpRequest


Sujet :

AJAX

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut [AJAX] Requ�teHTTP : utiliser XMLHttpRequest
    Bonsoir

    J'utilise la requ�te HTTP qui suit (je pr�cise : ici pas de jquery) qui semble g�rer les particularit�s d'IE.
    Par contre il n'y a pas de page 'caniuse XMLHttpRequest' (au passage la m�thode semble maintenant support� par IE11), ma question est juste : y a t-il une possibilit� de tomber sur d'autres navigateurs qui ne la supportent pas, soit que cette fonction renvoie '0' ?

    Merci d'avance

    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
    function Message (typ)
    {
    	var xhr = false;
    	if (window.XMLHttpRequest)
    	// Firefox, Opera, Chrome
    	{
    		xhr = new XMLHttpRequest();
    	}
    	else if (window.ActiveXObject)
    	// Internet Explorer < 11
    	{
    		var names = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
    		for (var i in names)
    		// Teste les versions
    		{
    			try{ xhr = new ActiveXObject(names[i]); }
    			catch(e){}
    		}
    	}
    	if (xhr)
    	{
    	// Requête POST
    		xhr.open("POST", 'Notify_' + typ + '.php', false);
    		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		xhr.send('lng=' + lng + '&os=' + os + '&bwr=' + bwr + '&cnv=' + cnv);
    		if (xhr.readyState == 4)
    		{
    			if (xhr.status == 200)
    				return xhr.responseText;
    			else
    				return xhr.status;
    		}
    	}
    	else
    		return 0;
    };

  2. #2
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Merci.
    Il y a effectivement des pr�cisions utiles mais en gros cette fonction fait la m�me chose, sauf qu'ici ma requ�te est synchrone.

    Je suppose que par rapport � ma question il faut comprendre que oui, il y a encore des navigateurs pour lesquels cette fonction �chouera ?

  4. #4
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    il y a encore des navigateurs pour lesquels cette fonction �chouera ?
    Je penses effectivement qu'Olivier de Kersauson ferait partie de cela

    IE reconnait l'objet depuis sa version 7, en pensant � configurer pour, http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    sauf qu'ici ma requ�te est synchrone.
    que tu sois en synchrone ou asynchrone ne changera rien au fait que le navigateur impl�mentera cet objet.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Depuis IE7, ok ... bref pour l'objet xhr c'est r�gl� pour IE.
    Maintenant ma question de base �tait : reste t-il beaucoup d'Olivier de Kersauson ? Faut-il s'en soucier quoi ..

    D'autre part tu m'annonces qu'il faut aussi traiter la r�ponse en fonction du navigateur pour IE<10, c'est � dire qu'il faudrait aussi faire quelque chose comme �a ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (xhr.status == 200)
              if(window.DOMParser) {
     
                        var parser = new DOMParser();
                        return parser.parseFromString(xhr.responseText,"text/xml");
     
              } else {
     
                        return xhr.responseText;
     
                        }
              }
    }

  6. #6
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Maintenant ma question de base �tait : reste t-il beaucoup d'Olivier de Kersauson ? Faut-il s'en soucier quoi ..
    Non

    D'autre part tu m'annonces qu'il faut aussi traiter la r�ponse en fonction du navigateur pour IE<10, c'est � dire qu'il faudrait aussi faire quelque chose comme �a ?
    Uniquement si tu souhaites utiliser la responseXML.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Non
    Ok merci

    Uniquement si tu souhaites utiliser la responseXML.
    Scuse, mais je comprends pas ce que tu entends par l� ... si je fais une requ�te c'est bien pour utiliser le r�sultat (?)
    En l'occurrence je fais �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var get = Message (typ);
    if (typeof get == 'number')
    {
    	// erreur ..
    }
    else
    {
    	// chaine au format json
    	get = eval('('+ get +')');
    	// etc .. le résultat va dans une div
    }
    Est ce qu'il faut ajouter ce test (window.DOMParser) dans le traitement de la r�ponse de ma fonction 'Message' ?
    Vu que je mets � jour IE je n'ai plus la version 9 pour tester ..

  8. #8
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Quoiqu'il arrive tu r�cup�res une String, si tu dois recevoir une String au format JSon alors il te faut utiliser JSON.parse pour pouvoir utiliser un objet apr�s "conversion".

    Tu peux recevoir une String au format HTML, XML ou toutes autres repr�sentation d'un objet, d'une valeur...mais le point commun sera responseText.

    Dans ton cas je ne suis pas s�r de ce que tu recois, attendu les commentaires de ton code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    // chaine au format json
    get = eval('('+ get +')');
    // etc .. le résultat va dans une div
    PS: Dans tous les cas, laisse tomber ton eval, dont tout le monde te diras le bien qu'il en pense.

    [EDIT]
    Comprendre les m�canismes d'AJAX

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par d�faut
    Ok compris, actuellement je transmets du HTML, et effectivement la particularit� IE concerne juste le format XML. C'est pour une div de notification dont le contenu est irr�gulier (texte avec liens ou pas, images ou pas etc..) donc je suppose que le XML n'est pas adapt�.

    Concernant le eval j'avais opt� pour �a � cause d'une plus grande compatibilit� (json.parse n'est pas support� par IE7 mais bon on va dire que tant pis ..), et effectivement �a semble un mauvais choix...

    PS : L� dessus l'article que tu mets en lien n'est plus tr�s � jour, il ne parle pas de json.parse ("Il faut toutefois �tre conscient qu'il est impossible d'�viter l'utilisation de eval()")

    Merci bien pour tes r�ponses

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] Utilisation XMLHTTPRequest
    Par Daviloppeur dans le forum AJAX
    R�ponses: 16
    Dernier message: 24/09/2009, 16h01
  2. [AJAX] Utilisation XMLHttpRequest
    Par DJERO77 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 02/08/2007, 10h27
  3. [AJAX] Permission refus�e XMLHttprequest
    Par allserv dans le forum G�n�ral JavaScript
    R�ponses: 16
    Dernier message: 23/04/2007, 14h34
  4. [AJAX] Comment utiliser AJAX
    Par Taz_8626 dans le forum G�n�ral JavaScript
    R�ponses: 14
    Dernier message: 06/04/2006, 15h16
  5. Comment utiliser XMLHttpRequest()
    Par pierrot10 dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 28/12/2005, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo