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

JavaScript Discussion :

ajax pas de réponse coté serveur


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut ajax pas de réponse coté serveur
    Bonjour,
    dans le but de faire un formulaire de contacte je me suis lancé dans l'ajax.
    Le souci c'est une fois que ma fonction est lancé je ne reçois pas de réponse du serveur j'ai un jolis Aborted.
    Donc le requête est bien envoyer mais c'est la réponse qui merde.

    Sauf quand je mes un "alert("test");" apres "xhr.send(data);"

    Voila le js :
    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
     
    function getXMLHttpRequest() {
    	xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
     
    	return xhr;
    }
     
    function request(callback) {
     
    	 nom = document.getElementById("nom").value;
    	 prenom = document.getElementById("prenom").value;
    	 email = document.getElementById("email").value;
    	 site = document.getElementById("site").value;
    	 sujet = document.getElementById("sujet").value;
    	 texte = document.getElementById("texte").value;
    	 verif = document.getElementById("verif").value;
     
    	xhr = getXMLHttpRequest();
     
     
    	data = 'nom='+escape(nom);
    xhr.open("POST", "http://beta.live-linux.fr.nf/site/templates/mail.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");       
    xhr.send(data);
     
    xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			callback(xhr.responseText);
    			document.getElementById("loed").style.display = "none";
    			document.getElementById("mail").style.display = "inline";
     
    		} else if (xhr.readyState < 4) {
    			document.getElementById("loed").style.display = "inline";
    			document.getElementById("mail").style.display = "none";
    		}
    		else if (xhr.status == 500 ) {
    			document.getElementById("loed").style.display = "none";
    			document.getElementById("mail").style.display = "inline";
    		}
    	};
    }
     
    function readData(sData) {
     
    alert(sData);
    }
    La page en html :
    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
    <div id="right">
    <div id="mail" >
     
    <form method="post" >
    <br />
    	<fieldset class="connection">
    	<legend>.: Mail :.</legend>
    	<br />
    		<table class="tableau">
    			<tr>
    				<td><p>Nom : </p></td>
    				<td><input type="text" id="nom" /></td>
    				<td><em>ereur</em></td> 
    			</tr> 
    			<tr>
    				<td><p>Prénom : </p></td>
    				<td><input type="text" id="prenom" /></td>
    				<td><em>ereur</em></td>
    			</tr>
    			<tr>
    				<td><p>E-mail : </p></td>
    				<td><input type="text" id="email" /></td>
    				<td><em>ereur</em></td>
    			</tr>
    			<tr>
    				<td><p>Site internet ( facultatif ) : </p></td>
    				<td><input type="text" id="site" value="http://" /></td>
    			</tr>
    			<tr>
    				<td> <p>Sujet : </p></td>
    				<td> <input type="text" id="sujet" /></td>
    				<td><em>ereur</em></td>
    			</tr>
    		</table>
     
    		<br />
    			<textarea name="texte" id="texte">Taper votre texte</textarea>
    	<br />
    	</fieldset>
    	<br/>
    	<fieldset class="connection">
    	<legend>.: Traitement :.</legend>
    	<br />
    		<center>
    			<a onclick=""><img  id="image" src="http://beta.live-linux.fr.nf/site/libs/captcha/captcha.php" alt="image de protection"  /></a><br />
    			<p>recopier les chifres : <input type="text" id="verif" size="10" maxlength="5" /><em> ereur</em></p>
    			<p><button onclick="request(readData);">GO</button></p>
    		</center>
    	<br />
    	</fieldset>
     
    </form>
     
    </div>
    <div id="loed" style="display: none;">
    <br/><br/><br/><br/>
    <center>
    <img  src="http://beta.live-linux.fr.nf/site/ajax.gif" alt="chargement"  />
    <p>Envoy du mail en cours</p>
    </center>
    </div>
     
    <div id="reusii" style="display: none;">
    <br/><br/><br/><br/>
    <center>
    <h1>Envoy reussi</h1>
    </center>
    </div>
    </div>
    Le code php qui reçois la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
            echo $_POST['nom'];
    ?>
    Pour ceux que ça peut aider ici l'adresse du formulaire : http://beta.live-linux.fr.nf/site/contact

    Un grand merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    callback(xhr.responseText);
    ? elle est ou la fonction callback ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    elle est la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function readData(sData) {
     
    alert(sData);
    }

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par live-linux Voir le message
    elle est la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function readData(sData) {
     
    alert(sData);
    }
    tu peux regarder avec firebug les traces de tes requetes ajax dans l'onglet console.

    Il est primordiale pour toi d'utiliser de bon outils pour bosser comme firebug. C'est le minimum syndical

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben un truc m'echappe ...

    elle s'appelle readData() pas callback()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                           alert(xhr.responseText)
    			readData(xhr.responseText);
    			document.getElementById("loed").style.display = "none";
    			document.getElementById("mail").style.display = "inline";
    il te retourne quoi là ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    ben un truc m'echappe ...

    elle s'appelle readData() pas callback()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                           alert(xhr.responseText)
    			readData(xhr.responseText);
    			document.getElementById("loed").style.display = "none";
    			document.getElementById("mail").style.display = "inline";
    il te retourne quoi là ?
    regarde bien le code HTML, il fait un request(readdata), donc son code est correct.

    mais reste à voir ce qu'il recoit

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    oui ok pour le request ...
    la requete est bien lancée ...
    mais je ne vois rein sur le retour hormis l'appel à une fonction callback que je ne vois nulle part
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Futur Membre du Club
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    merci de votre aide,
    avec firebug j'ai un Aborted sur la requête post.

    Edit :

    En regardant les requête qui son fait je voyait 2 POST,

    dans le fichier html il y a '<form method="post" >'.

    J'ai retirai le ' method="post" '.

    Mais sa ne resoud rien je n'ai toujours pas de réponse.

  9. #9
    Futur Membre du Club
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    2 grosse erreur sont la, ce n'était pas dans le js mais dans le code html.

    Alors la premier :
    que j'ai remplacé par :
    Et la deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><button onclick="request(readData);">GO</button></p>
    que j'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><input type="button" onclick="request(readData);" value="GO" /></p>
    Un grand merci à vous 2 d'avoir pris le temps de regarder au code.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    le
    n'est certainement pas une grosse erreur, au contraire c'est contraire au w3c de ne pas mettre d'attribut method ni action ni d'ailleurs nalme à ton form. Ils ne servent à rien dans le cas de ton ajax mais ne sont pas bloquants.
    Je n'ai toujours pas compris comment tu appelais ta fonction callback qui n'existe pas ...
    il n'y a aucune raison que le onclick de la balise button ne puisse pas lancer ton ajax ...
    Ce sont là a mon avis de faux problèmes qui n'étaient à mon avis pas la cause de ton blocage
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le
    n'est certainement pas une grosse erreur, au contraire c'est contraire au w3c de ne pas mettre d'attribut method ni action ni d'ailleurs nalme à ton form. Ils ne servent à rien dans le cas de ton ajax mais ne sont pas bloquants.
    Je n'ai toujours pas compris comment tu appelais ta fonction callback qui n'existe pas ...
    il n'y a aucune raison que le onclick de la balise button ne puisse pas lancer ton ajax ...
    Ce sont là a mon avis de faux problèmes qui n'étaient à mon avis pas la cause de ton blocage
    Super il nous manquait l'essentiel, le <button> par défaut est un submit, donc avoir un form et faire de l'ajax derrière c'est pas utile, quand tu cliquais sur le bouton, tu ne t'en rendait pas du tout compte mais tu lancais ta requete ajax et tu envoyais le formulaire, ce qui rechargeait ta page.

    Donc fallait bien regarder autour

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ha button agit comme un submit ? je le savais pour une type image ...

    il suffisait alors de rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return false;"
    dasn la balise form.

    Mais ceci ne me dit toujours pas comment la fonction callback est lancée


    ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="javascript: alert('formuliare soumis')" method="post">
    <input type="text" value="" />
    <input type="button" value="go" />
    </form>
    mon input button ne fait pas office de submit ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/11/2009, 17h17
  2. Réponses: 7
    Dernier message: 13/08/2009, 09h19
  3. [AJAX] AJAX traiter la réponse du serveur
    Par dadadoux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2009, 09h36
  4. Client ne reçoit pas les réponses du serveur
    Par Joccy dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 04/10/2007, 15h16
  5. Réponses: 7
    Dernier message: 25/08/2006, 14h15

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