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] xmlHTTPRequest qui ne fonctionne pas toujours.


Sujet :

AJAX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 4
    Points
    4
    Par défaut [AJAX] xmlHTTPRequest qui ne fonctionne pas toujours.
    Bonsoir

    Voilà mon problème : Je développe actuellement un site internet. J'ai donc décidé d'utiliser xmlHTTPRequest...

    Tout fonctionne correctement, sauf, une chose : le formulaire d'inscription.
    L'adresse du site est ici : http://ldfs.hd.free.fr/cplusdirect/site/index.php

    Quand on clique sur le lien "Artistes, Prestataires, cliquez ici pour vous inscrire gratuitement", un div est affiché, demandant de faire un choix pour afficher un formulaire, en fonction.

    Quand on fait le choix, ce formulaire s'affiche sur 90% des machines testées et toute la procédure fonctionne bien. Seulement, dans 10% des cas, ce formulaire ne s'affiche pas. Après investigations, il s'avère que pour une raison que je ne comprends pas, la requête AJAX n'est pas envoyée et donc, la page php appelée n'est pas chargée dans le div.

    Je vous joins la fonction qui est chargée d'afficher le formulaire dans le div :

    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
    function AffichTypeInscription (type)
    {	var xhr_object = null;
     
    	if (window.ActiveXObject) // Internet Explorer
    	{	xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	else if (window.XMLHttpRequest) // Firefox 
    	{	xhr_object = new XMLHttpRequest();
    	}
    	else
    	{	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		return;
    	}
     
    	if (type == 0)
    	{	document.getElementById('choix_inscription').innerHTML = 'Faites votre choix';
    		xhr_object.open("GET", "./accueil/inscriptions/form_empty.php", true); 
    	}
    	else if (type == 1)
    	{	document.getElementById('choix_inscription').innerHTML = 'Rubrique des artistes';
    		xhr_object.open("GET", "./accueil/inscriptions/form_inscription_artistes.php", true);
    	}
    	else if (type == 2)
    	{	document.getElementById('choix_inscription').innerHTML = 'Rubrique des prestataires';
    		xhr_object.open("GET", "./accueil/inscriptions/form_inscription_prestataires.php", true);
    	}
    	else
    	{	document.getElementById('choix_inscription').innerHTML = 'Sélection invalide';
    		xhr_object.open("GET", "./accueil/inscriptions/form_empty.php", true); 
    	}
     
    	xhr_object.onreadystatechange = function ()
    	{	if (xhr_object.readyState == 4)
    		{	document.getElementById('choix_inscription').innerHTML = xhr_object.responseText;
    		}
    	} 
     
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	xhr_object.send();
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue sur developpez.
    Seulement, dans 10% des cas, ce formulaire ne s'affiche pas.
    Tu peux être plus précise? C'est quand que ça ne fonctionne pas? Avec quel navigateur?
    Essaie avec :

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Si seulement je savais... Je ne vois pas comment être plus préciS

    Ca fonctionne ou pas, peu importe le navigateur, peu importe le fournisseur d'accès...

    J'ai essayé de reproduire le problème, pour comprendre, mais sans grand succès. j'ai même tenté d'utiliser un proxy, pour ne pas fonctionner en local. Et tout fonctionne bien.

    Si j'arrivais à comprendre d'où vient le problème... Je vais essayer la solution que tu me proposes. Je vais bien voir

    Pour les 10% où ça ne fonctionne pas, et bien, le script reste bloqué au javascript. L'appel de la page où se situe le formulaire, via xmlHTTPRequest ne semble pas se faire. Du coup, le formulaire n'est pas affiché. C'est comme si certains navigateurs n'avaient pas xmlHTTPRequest... Pourtant, ce n'est pas le seul endroit où j'utilise ajax et partout ailleurs sur le site, tout fonctionne. Plus étonnant encore, la console d'erreur de firefox ne retourne aucune erreur lorsque ça ne fonctionne pas et de toute façon, si le navigateur ne prenait pas en charge cette fonction, le message d'erreur apparaîtrait comme quoi, le navigateur est trop vieux. Si c'était javascript qui était désactivé, le formulaire ne s'afficherait pas...

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Une piste éventuelle... ta création de l'objet de transport (XMLHTTPRequest ou activeX) n'est pas tout-à-fait "standard", et doit poser problème sur certaines versions d'IE : je te laisse comparer avec l'exemple donné dans la FAQ Ajax, car il est plus complet, à récupérer pour tester si ça passe mieux... ^^

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut,
    Vu que tu fais tes requêtes en get, cette ligne est perturbante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    donc supprime-la.
    Et fais attention aux problèmes de cache

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/11/2017, 12h44
  2. Un update qui ne fonctionne pas toujours + NodeJs-anularJs-MongoDB
    Par Invité dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 24/10/2015, 17h45
  3. [XL-2007] Code qui ne fonctionne pas toujours
    Par Foxeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/12/2013, 12h16
  4. [AJAX] xmlhttprequest.send qui ne fonctionne pas avec une variable !
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/03/2009, 18h17
  5. Réponses: 2
    Dernier message: 20/08/2008, 23h09

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