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] Redirection après suppréssion


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut [AJAX] Redirection après suppréssion
    Bonjour à tous,

    Je débute juste en Ajax (langage très intéressant par ailleurs^^)

    Par contre la je coince depuis un ptit moment sur la redirection vers une autre page.

    En faite mon script sert à supprimer un enregistrement SQL donc voici la partie ou il va faire appel à la page qui supprimera l'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    			var xhr=null;
    			if (window.XMLHttpRequest) { 
    				xhr = new XMLHttpRequest();
    			}
    			else if (window.ActiveXObject) 
    			{
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
     
    			xhr.open("GET", "home.php?page=delete_creations&id="+id, true);
    			xhr.send(null);
    Mon problème est que je souhaite recharger la page sur laquelle il est après suppression mais lorsque je met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.replace("mon adresse");
    après non seulement la redirection ne ce fait pas mais la suppression non plus.

    Je vous remerci d'avance pour votre aide.

    Bonne soirée

  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,
    quelques remarques préalables :
    • Pourquoi utiliser Ajax si tu souhaites un rechargement de ta page (Ajax est là essentiellement pour l'éviter) ? => utilise un formulaire classique
    • Tu réalises bien ton appel Ajax, mais non seulement tu ne fais rien quand il est terminé, mais tu ne vérifies même pas

    Comme tu travailles en asynchrone, regarde dans les tutos (celui-ci par exemple) l'utilisation du onreadystatechange : c'est cette propriété qui permet d' "écouter" la réponse d'Ajax. La réponse elle-même étant récupérée dans xhr.responseText (pour html) ou xhr.responseXML (pour xml)

    A+

  3. #3
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    Comme je débute en Ajax j'essaye de faire chaque choses en son temps.
    C'est pour cela que je fait le chargement de la page dans un premier temps.

    Sinon le bout que j'ai fait, je l'ai tiré de l'exemple justement mais comme j'ai remarqué qu'il n'arrivait pas à la fonction alert_ajax qui traite les infos de retour je l'ai supprimé par la suite.

    Au début j'avais mis la redirection dans la fonction appelé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.onreadystatechange = function() { alert_ajax(xhr); };
    Mais sa n'avait pas marché également vu qu'il ne l'atteignait pas.

    Merci pour l'aide

  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
    Citation Envoyé par Gaara-Manga Voir le message
    Mais sa n'avait pas marché également vu qu'il ne l'atteignait pas.
    Pourtant c'était bon (sous réserve que le contenu de alert_ajax() soit compatible avec ta page).

    Tu aurais peut être dû envisager que ça soit ton serveur qui ne répondait pas

    Pour vérifier le résultat de ton appel Ajax, tape l'url appelée (via Ajax, donc) directement dans la barre d'adresse de ton nav.
    Quel est le résultat ?
    (la suppression a-t-elle eu lieu dans la bdd ?
    +
    que retourne le serveur (=> qu'affiche le nav) ?
    )

    A+

  5. #5
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    C'est bon sa marche il arrive bien à la fonction.
    Par contre pour vérifier si il allait à la fonction j'ai mis une alerte, et il me l'a affiché 3 fois.

    Sa veut dire qu'il aurait renvoyer 3 fois la réponse ?

    PS : nan je ne l'ai pas mis dans la boucle (au cas ou qu'on me le demande^^)

  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
    Citation Envoyé par Gaara-Manga Voir le message
    Sa veut dire qu'il aurait renvoyer 3 fois la réponse ?
    Si tu as fais 3 fois l'appel, certainement
    EDIT : j'avais pas vu ton PS

    On peut voir ton script actuel complet (côté client) ?

    A+

  7. #7
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    Nan jpense pas l'avoir fait 3 fois^^

    Sinon voici la page php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $page_level=5;
    include('inc/protec.php');
     
    $id = $_GET["id"];
    if(isset($id))
    {
            mysql_query("DELETE FROM ".$p."Creations WHERE Cr_code= '".$id."'");
    }
    ?>

    Et la partie javascript :
    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
    function supprime(id)
    {
    	if (confirm("<?php echo $lang['CREA_CONFIRM']; ?>"))
    	{
    		if(id != "")
    		{
    			var xhr=null;
    			if (window.XMLHttpRequest) { 
    				xhr = new XMLHttpRequest();
    			}
    			else if (window.ActiveXObject) 
    			{
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
       			//on définit l'appel de la fonction au retour serveur
        		xhr.onreadystatechange = function() { alert_ajax(xhr); };
     
    			xhr.open("GET", "home.php?page=delete_creations&id="+id, true);
    			xhr.send(null);
    		}
    	}
    }
     
    function alert_ajax(xhr)
    {
    	var docXML= xhr.responseXML;
    	var items = docXML.getElementsByTagName("donnee")
    	//on fait juste une boucle sur chaque element "donnee" trouvé
    	for (i=0;i<items.length;i++)
    	{
    		alert (items.item(i).firstChild.data);
    	}
    }
    La suppression ce fait nikel donc jpense pas qu'il y ai de problème niveau php

  8. #8
    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
    Citation Envoyé par Gaara-Manga Voir le message
    La suppression ce fait nikel donc jpense pas qu'il y ai de problème niveau php
    Heu si, quand même : ton serveur ne répond rien

    Il faut déjà que ton serveur teste le résultat de la suppression (c'est la moindre des choses), et qu'il renvoie une réponse au client => tu n'as qu'à faire un "echo 0" si KO et un "echo 1" si OK : c'est suffisant.
    Par contre, ton Javascript devra tester ce code retour (pour informer l'utilisateur en cas de pépin) => tu devras modifier ton appel_ajax() qui n'est pas du tout (du tout) adapté pour l'instant ...

    A+

  9. #9
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    Si il répond bien mon serveur vu que la suppression dans la base se fait bien.

    Bon sinon tant pis jvais essayer de me débrouillé autrement pour faire ma redirection vu qu'a la base c'est sa que je cherché à faire

  10. #10
    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
    Citation Envoyé par Gaara-Manga Voir le message
    Si il répond bien mon serveur vu que la suppression dans la base se fait bien.
    Non !
    Il effectue le traitement que tu lui demandes, mais il ne renvoie rien ( = ne répond pas) au navigateur : ta page PHP ne génère aucune sortie (aucun "echo"). Ce n'est qu'avec cette réponse que ton navigateur pourra réagir, en l'occurrence faire ta redirection (celle qui fait qu'il est inutile d'utiliser Ajax dans ce cas )

    A+

  11. #11
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    A oki j'avais pas vu le truc vraiment comme sa.

    J'ai refait le script la redirection marche mais la suppression pas cette fois-ci^^"
    Jpense que sa vient de ma récupération de la réponse mais jsuis pas sur....

    Partie javascript :
    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
    function supprime(id)
    {
    	if (confirm("<?php echo $lang['CREA_CONFIRM']; ?>"))
    	{
    		if(id != "")
    		{
    			var xhr=null;
    			if (window.XMLHttpRequest) { 
    				xhr = new XMLHttpRequest();
    			}
    			else if (window.ActiveXObject) 
    			{
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
       			//on définit l'appel de la fonction au retour serveur
        		xhr.onreadystatechange = function() { alert_ajax(xhr); };
     
    			xhr.open("GET", "home.php?page=delete_creations&id="+id, true);
    			xhr.send(null);
    		}
    	}
    }
     
    function alert_ajax(xhr)
    {
    	var docXML= xhr.responseXML;
    	if(docXML=1)
    	{
    		window.location.replace("home.php");
    	}else{
    		alert("Une erreur c'est produite lors de la suppréssion de la création");
    	}
    }
    Partie php :
    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
    <?php
    $page_level=5;
    include('inc/protec.php');
     
    $id = $_GET["id"];
    if(isset($id))
    {
            if(mysql_query("DELETE FROM ".$p."Creations WHERE Cr_code= '".$id."'"))
            {
                    echo 1;
            }else{
                    echo 0;
            }
    }
    ?>

  12. #12
    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
    Citation Envoyé par Gaara-Manga Voir le message
    J'ai refait le script la redirection marche mais la suppression pas cette fois-ci^^"
    Vérifie ton PHP : ta syntaxe "if(mysql_query(..." semble bizarre (mais là je peux pas t'aider )

    Sinon, la réponse sera en caractères et non numérique => A+

  13. #13
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    Oki deja jcomprend mieux la notion de réponse et de gestion de cette dernière.

    Par contre j'ai l'impression qu'il aime pas la redirection car à chaque fois que j'essaie de la faire même sous n'importe quel condition alors la suppression ne marche plus.

    Jme demande si c'est bien possible de faire une redirection vu que justement c'est pas fait pour sa l'ajax.

  14. #14
    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
    Citation Envoyé par Gaara-Manga Voir le message
    Par contre j'ai l'impression qu'il aime pas la redirection car à chaque fois que j'essaie de la faire même sous n'importe quel condition alors la suppression ne marche plus.

    Jme demande si c'est bien possible de faire une redirection vu que justement c'est pas fait pour sa l'ajax.
    M'étonnerait : la redirection intervient après la suppression.

    Pour la fin : pas d'impossibilité : c'est juste une question de logique ...

    A+

Discussions similaires

  1. Redirection après Ajax
    Par enila dans le forum Web
    Réponses: 0
    Dernier message: 22/09/2010, 15h36
  2. [AJAX] Redirection après Ajax qui ne fonctionne pas
    Par ingeniomatique dans le forum AJAX
    Réponses: 9
    Dernier message: 19/08/2010, 15h29
  3. redirection après requête AJAX
    Par splifferwolf dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2010, 15h58
  4. [AJAX] Redirection après un post ajax
    Par PsyKtra dans le forum AJAX
    Réponses: 11
    Dernier message: 19/04/2010, 13h35
  5. [AJAX] Redirection après réponse du serveur
    Par acidline dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/08/2007, 14h51

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