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 :

Duplication de page sur requête AJAX


Sujet :

AJAX

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut Duplication de page sur requête AJAX
    Bonjour,

    J'ai un problème lors de l'exécution d'une requête AJAX. Celle-ci me retourne une page dupliqué.

    J'ai fait des recherches sur internet pour trouver une solution au problème mais les solutions trouvées ne fonctionne pas chez moi.
    (ou alors de je n'ai pas réussi à les adapter correctement).

    Voici le code de ma requête AJAX (la page web appelée dans le get dans la requête AJAX est une page web en php classique).

    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
    <script type="text/javascript">
     
     
    	function recupValInput(str) {
     
    			var lastRequest = null;
    			var valInput_1 = str;
    			var choix = document.getElementById("choix").value;
    			var nbEnregATrouver = document.getElementById("nbEnregATrouver").value;
    			var nbVerbesTraiter = document.getElementById("nbVerbesTraiter").value;
    			var page = document.getElementById("page").value;
     
    			if (str.length == 0) { 
    				document.getElementById("txtHint").innerHTML = "";
    				return;
    			}else {
    				var xmlhttp = new XMLHttpRequest();
    				xmlhttp.onreadystatechange = function() {
    					if (this.readyState == 4 && this.status == 200) {
    						document.getElementById("txtHint").innerHTML = this.responseText;
    					}
    				}
    				xmlhttp.open("GET", "saisie_T19.php?input_1=" + str + '&choix=' + choix + '&nbEnregATrouver=' + nbEnregATrouver + + '&nbVerbesTraiter=' + nbVerbesTraiter + '&page=' + page, true);
    				xmlhttp.send(null);
     
    			}
    		}
     
    	</script>
    Encore merci d'avance pour votre aide ...

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    Celle-ci me retourne une page dupliqué.
    qu'est ce à dire, que le problème est côté serveur ou que tu as des soucis avec le cache ou ... ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Bonsoir,

    En fait je n'en sais rien... J'ai l'impression que le problème vient de l'instruction ajax suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlhttp.open("GET", "saisie_T19.php?input_1=" + str + '&choix=' + choix + '&nbEnregATrouver=' + nbEnregATrouver + + '&nbVerbesTraiter=' + nbVerbesTraiter + '&page=' + page, true);
    J'ai fait des essais de code ajax en créant des projets distincts et cela fonctionnait correctement...
    Désoler mais je ne peux pas vous aider davantage. D'autre part je ne pense pas qu'il y a un problème de cache.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Comment est appelé la fonction recupValInput, est ce contenu dans un élément <form> auquel cas sans inhiber le comportement par défaut la page serait rechargée ...?

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Merci pour votre réponse. En effet la l'appel de la fonction recupValInput() se fait dans un input placé dans un form dont voici le code :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="form_saisie_vi" name="form_saisie_vi" action="correctionVG_T19.php" method="post" >

    Et voici le code du input contenant l'appel à la fonction recupvalInput() :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <td NOWRAP><input type="text" size="20" id="<?php echo $pR[$nbVerbesTraiter] ?>"  name="<?php echo $pR[$nbVerbesTraiter] ?>" onchange="recupValInput(this.value, this);" /></td>

    Question : Dois-je déplacer l'événement onchange dans le la fonction recupValInput ? Si oui merci de m'indiquer comment procédé.

    En vous remerciant pour votre aide.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    J'ai trouvé l'origine de mon problème de duplication. Il faut mettre le code suivant tout en haut du fichier php saisie_T19.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
        session_start();
    	if (isset($_GET['mavariable1'])) {
    			$tab_php = json_decode($_GET['mavariable1'], false);
    			foreach($tab_php as $cle => $valeur){
    				echo ("ARRAY Clé : " .$cle.' Valeur : '.$valeur)."<br />";
    			}
    			exit();
    	}
     
     
    ?>
    En vous remerciant pour votre aide.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut Une petite précision
    Bonsoir,

    Je viens de m'apercevoir que je nous ai pas donner le code de la fonction js recupValInput() que j'ai changé récemment.

    Ce nouveau code est nécessaire pour comprendre le code que j'ai ajouté en tête de la page php saisie_T19.php et qui résout le problème de duplication de page.

    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
    $(document).ready(function(){
     
    		$("input").change(function(event){
     
    			var cle = $(this).attr('id');
    			var valeur = $(this).val(); 
    			var choix = document.getElementById("choix").value;
    			var nbEnregATrouver = document.getElementById("nbEnregATrouver").value;
    			var nbVerbesTraiter = document.getElementById("nbVerbesTraiter").value;
    			var page = document.getElementById("page").value;
    			var nbInsertion = document.getElementById("nbInsertion").value;
     
    			var ppassage = document.getElementById("premierPassage").value;
    			document.getElementById('cle').value = cle; 
    			document.getElementById('valeur').value = valeur; 
     
    			if (ppassage == true) {
    				var arr = [];
    				var ppassage = document.getElementById("premierPassage").value = false;
    			}else {
    				var arr = save_arr;
    			}
     
    			save_arr = arr;
     
     
    			// AJAX -----------------------------------------------------
     
    			var mavariable1 = {}; //<- initialize an object, not an array
     
    			for(var key in arr)
    			{
    				var value = arr[key];
    				mavariable1[key] = value;
    			}
     
    			var mavariable3 = JSON.stringify(mavariable1);
     
    			var xhr = new XMLHttpRequest();
    			xhr.open("GET", "saisie_T19.php?mavariable1=" + mavariable3 + '&choix=' + choix + '&nbEnregATrouver=' + nbEnregATrouver  + '&nbVerbesTraiter=' + nbVerbesTraiter + '&page=' + page + '&nbInsertion=' + nbInsertion, true);
    			xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    			xhr.onreadystatechange = function () {
    			  if(xhr.readyState === 4 && xhr.status === 200) {
    				document.getElementById("txtHint").innerHTML = this.responseText;
    				alert("responseText : " + this.responseText);
    				console.log("this response : " + this.responseText);
     
    			  }
    			}
    			xhr.send(null);		
    		})
    		return;
    	})	
     
     
     
    	</script>

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Comme tu utilises jQuery pourquoi ne pas l'utiliser en plein ?

    Exit les document.getElementById ou autre new XMLHttpRequest() par exemple.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Vous avez parfaitement raison... En fait je ne suis pas parfaitement à l'aise avec jQuery mais je vais quand même essayer de modifier le code pour utiliser jQuery partout dans la fonction. Cela rendra en effet le code plus cohérent.

    Encore merci.

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

Discussions similaires

  1. Ancrage d'une page avec requête ajax
    Par Amnael dans le forum AJAX
    Réponses: 1
    Dernier message: 24/05/2017, 15h13
  2. [AJAX] Bug IE sur requête Ajax cross-domain
    Par amoiraud dans le forum jQuery
    Réponses: 0
    Dernier message: 09/04/2013, 10h17
  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. [AJAX] Appeller une page php en Ajax pour action sur Mysql
    Par Overstone dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 20/07/2007, 18h23

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