Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 15h51   #1
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
Par défaut 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 :
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 :
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
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h14   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h20   #3
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 :
xhr.onreadystatechange = function() { alert_ajax(xhr); };
Mais sa n'avait pas marché également vu qu'il ne l'atteignait pas.

Merci pour l'aide
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h25   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h32   #5
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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^^)
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h41   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h46   #7
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
Nan jpense pas l'avoir fait 3 fois^^

Sinon voici la page php :
Code :
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 :
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
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h53   #8
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h58   #9
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h07   #10
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h13   #11
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 :
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 :
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;
	}
}
?>
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h16   #12
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h34   #13
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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.
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h41   #14
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 513
Points : 15 513
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h47.


 
 
 
 
Partenaires

Hébergement Web