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] Envoie d'une requête AJAX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut [AJAX] Envoie d'une requête AJAX
    Bonjour à toutes et à tous,

    Voilà, j'ai fait un bout de code qui me permet, selon des paramètres mis en entrée, de récupérer la valeur des champs, de les envoyer à une requête puis de récupérer le résultat de cette dernière...

    Seul soucis, je n'arrive pas à envoyer mes données... Je ne comprend absolument pas... J'ai fait un fichier qui fonctionne, mais qui fonctionne différemment bien sur.

    La seul différence entre les deux et que celui ou j'ai le problème est exécuté lors d'un onClick et l'autre est exécuté automatiquement.

    voici le bout de code :
    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
     
    function testErreurs(IDElements, Methode){
    		var getXhr; 
    		if (window.XMLHttpRequest)  { 
    	    		getXhr = function () { 
    	        		return new XMLHttpRequest(); 
    	    		}; 
    			} else if (window.ActiveXObject) { 
    	    		getXhr = function () { 
    	        		return new ActiveXObject("Microsoft.XMLHTTP");   
    	    		}; 
    			} else { 
    	    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.");   
    	    		getXhr = function () {};   
    			}
     
     
    			function RecupString(IDElements){
        			var vecteur = IDElements.split(",");
    				for (i in vecteur){
    					var Id = vecteur[i];
    					var valeur = document.getElementById(Id).value;
    					if(i==0){
    						var string = Id+'='+encodeURIComponent(valeur);
    					}else{
    						string=string+'&'+Id+'='+encodeURIComponent(valeur);
    					}
    				}
    				return string;
    			}
     
    			var string = RecupString(IDElements);			
     
    			// connection 
    			var xhr = getXhr();   
    			xhr.open("POST", "/4DACTION/"+Methode, true);
    			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    			xhr.onreadystatechange = function() {
            		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    					Erreur = xhr.responseText;
            		}
    			};
    			alert(string);
    			xhr.send(string);
    }
    Merci d'avance pour votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par tidus_6_9_2 Voir le message
    La seul différence entre les deux et que celui ou j'ai le problème est exécuté lors d'un onClick et l'autre est exécuté automatiquement.
    il s'agit bien de la même fonction et seul l'appel est différent ?
    Dans ce cas, il faudrait nous montrer ces 2 appels.

    Sinon, si c'est 2 fonctions "similaires", il faudrait quand même montrer les 2 versions (et toujours les 2 appels).

    EDIT : de plus quel est le comportement de la version "qui marche pas" ? Une erreur ? Laquelle et où ?

    A+

  3. #3
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    oups désolé manque de détail ^^

    Alors la version qui ne fonctionne pas est au dessus, elle ne m'envoie rien. Le send ne passe pas...

    Pour ce qui est de la version qui fonctionne la voici :

    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
     
    $(function() {
    		var getXhr; 
    		if (window.XMLHttpRequest)  { 
    	    		getXhr = function () { 
    	        		return new XMLHttpRequest(); 
    	    		}; 
    			} else if (window.ActiveXObject) { 
    	    		getXhr = function () { 
    	        		return new ActiveXObject("Microsoft.XMLHTTP");   
    	    		}; 
    			} else { 
    	    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.");   
    	    		getXhr = function () {};   
    			}   
     
    			var str1 = document.getElementById('vLogin').value;  
    			var str2 = document.getElementById('vMdp').value;  
     
    			var string = 'login='   
    						+ encodeURIComponent(str1)   
    						+ '&mdp='   
    						+ encodeURIComponent(str2);  
    			var string = 'login='+str1+'&mdp='+str2;  	 
     
    			// connection 
    			var xhr = getXhr();   
    			xhr.open("POST", "/4DACTION/MonSuperTest", true);   
    			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
    			xhr.onreadystatechange = function() {
            		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    					ErreurConnexion = xhr.responseText;
            		}
    			};
    			xhr.send(string);
     
    		function runEffect2(){
    			var selectedEffect = "fold";
    			var options = {};
    			$("#erreurSimple").hide(selectedEffect,options,2000);
    		};
    		function runEffect(){
    			var selectedEffect = "fold";
    			var options = {};
    			$("#erreurSimple").show(selectedEffect,options,2000,callback);
    		};
    		function callback(){
    			setTimeout(function(){
    				$("#erreurSimple:visible").removeAttr('style').hide().fadeOut();
    				runEffect2();
    			}, 10000);
    		};	
    		function testVariable(ErreurConnexion){
    			setTimeout(function(){			
    			if(ErreurConnexion!=""){
    				document.getElementById("erreurSimple").innerHTML = ErreurConnexion;
    				runEffect();
    			}
    			}, 1000);
    		};
     
     
    		$("#boutonConnexion").click(function() { 
    			testVariable(ErreurConnexion);
    			return false;
    		});
     
    		$("#erreurSimple").hide();
    	});
    Donc dans celle-ci il n'y a aucun problème pour envoyer et récupérer mes valeurs. J'arrive même à lui envoyer la réponse de la requête.

    Mais pourtant j'ai fait exactement le même code pour ce qu'il s'agit du traitement de l'envoie, mais cela ne passe pas... Aucune valeur n'est récupéré.

    l'appel pour la fonction de ce post c'est juste l'appel au fichier donc :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="/library/AffichageErreurs.js" type="text/javascript"></script>

    Et pour le premier, donc celui qui ne fonctionne pas :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="boutonConnexion"Type="submit"class="button"name="Connection"value="Connection" onClick="testErreurs('vLogin,vMdp','MonSuperTest')">"

    Ce que je ne comprend pas c'est que ma variable que je veux envoyer ce remplit EXACTEMENT comme je le veux... mais il ne l'envoie pas...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Ben oui, mais si tu l'appel sur le click d'un bouton submit, la page se recharge dans la foulée (ou en appelle une autre), donc peu de chances que tu ais le temps de "voir" la réponse ...
    Tu as essayé de le faire sur un
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button">
    ?

    EDIT : dans ta 1° version, tu devrais sortir les déclarations (var ...) de la boucle. Sinon, multidéclaration d'une même variable, ce qui est théoriquement une erreur ...

    A+

  5. #5
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Oui ce que je me disais aussi... Mais cela ne change pas grand chose ^^ j'ai déjà essayé ^^

    Oui, j'ai zappé la déclaration, voulais faire comme avec du php donc var1, var2 etc...

    [EDIT] mais je ne vois pas d'ou ca peut venir surtout... Pourquoi dans la 2°version tout vas bien, tout est envoyé et tout est reçus et pas dans la 1° ?

    C'est assez incompréhensible pour moi pour l'instant... car il arrive à communiquer avec la page (donc "MonSuperTest") mais il n'arrive pas à lui envoyer les données...

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut


    Ça fonctionnerait pas mieux en sortant la déclaration de function RecupString(IDElements) du corps de l'autre fonction ??

    A+

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/03/2015, 19h45
  2. [Prototype] [AJAX] Exécuter une fonction javascript via une requête AJAX et innerHTML
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 01/05/2009, 04h36
  3. [AJAX] positionnement dans la page suite à une requête Ajax
    Par Ascella dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/12/2008, 19h10
  4. [Prototype] TinyMCE et autres lib dans une requête ajax
    Par metos256 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 03/03/2008, 11h25
  5. [AJAX] Réponse d'une requête xmlhttp
    Par odissey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/09/2006, 12h01

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