Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources 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 28/03/2011, 08h30   #1
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Par défaut Redirection par chemin relatif

Bonjour à tous,

Je suis sur la fin de la mise en place d'un formulaire d'inscription pour visite guidée. (3 jours que je bosse dessus)

Petite explications sur la procédure utilisée. L'utilisateur rempli un formulaire. Lors de l'envoi de ce formulaire, je capte l'event onClick et réalise une vérification par Ajax. Je commence par une vérification des données saisies côté serveur, au travers d'une vérification PHP. Une fois la valeur retournée, je fais appel à une deuxième page PHP qui elle est chargée d'injecter les données dans ma BDD. Le message de retour de cette page est soit une erreur, soit la chaine './../'

Code PHP :
1
2
3
4
5
6
7
8
9
if(mail($to, $subject, $message, $headers)){
	echo ('./../');
}
else{
	echo 'Erreur: de mail';
}
 
/* redirection à la page d'accueil */
exit;

Maintenant, une fois la réponse récupérée par ma fonction "Javascript/AJAX", je souhaite réaliser une redirection en cas de réception d'un message autre que "Erreur: ...".
J'ai donc rédigé ceci
Code JAVASCRIPT :
1
2
if( connection.responseText.indexOf('Erreur: ') == -1 )
	window.location(connection.responseText);


Malheureusement, ma redirection ne marche pas. Il revient sur la page sur laquelle j'ai mon formulaire, alors que je souhaiterais revenir sur la page d'accueil (dans un premier temps du moins, par la suite, affichage d'un message de confirmation d'envoi du formulaire).

Quelqu'un aurait-il une idée de pourquoi ma redirection ne marche pas ?
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 08h33   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
	window.location.assign(connection.responseText);
 
ou
 
	window.location.href=connection.responseText;
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h13   #3
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Bon ben, c'est officiel, je suis vraiment trop c**.

Voici maintenant le code que j'ai, et çà ne marche toujours pas.

Code de la page d'ajout dans la BDD :

Code PHP :
1
2
3
4
5
6
7
8
9
10
if(mail($to, $subject, $message, $headers)){
	echo ('./index.php');
}
else{
	echo 'Erreur: de mail';
}
 
/* redirection à la page d'accueil */
exit;
?>

Et le code de mon AJAX :
Code JAVASCRIPT :
1
2
3
4
connection.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
connection.send(requete);
if( connection.responseText.indexOf('Erreur: ') == -1 )
	window.location.href=connection.responseText;

Mais rien à faire, il revient toujours sur la page de mon formulaire. J'ai même essayer en mettant le chemin relatif, c-à-d sans préciser le nom de la page index.php, mais rien n'y fait.
Le fait que mon code Javascript est dans un sous-répertoire du site, j'ai même essayé avec './../index.php', mais cela ne change rien.
L'autre fonction précisée par SpaceFrog (window.location.assign(connection.responseText) ne marche pas non plu ...

Pouvez-vous me dire d'où peut provenir l'erreur ?

Autres petits soucis rencontré, mais ne rentre pas dans le cadre de la question, mes regex ne marche pas sur caractères accentués, malgré qu'ils soient précisés dans la regex.
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h26   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
ta requete ajax me semble un peu courte ...
tu testes le readystatus ?
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h36   #5
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Bon vous voulez du code, alors en voilà :

Code JAVASCRIPT :
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
connection.open("POST", "./inc/reservation.php", false);
/* informations de la visite */
requete = "groupname="+document.getElementById("groupname").value; /* input text */
requete += "&grouppostal="+document.getElementById("grouppostal").value; /* input text */
if( document.getElementById("languefr").checked) /* radio */
	requete += "&langue=FR";
else if( document.getElementById("languede").checked)
	requete += "&langue=DE";
else if( document.getElementById("languenl").checked)
	requete += "&langue=NL";
else
	requete += "&langue=FR";
requete += "&participants="+document.getElementById("participants").value; /* input text */
requete += "&mobred="+document.getElementById("mobred").value; /* input text */
requete += "&datevisite="+document.getElementById("datevisite").value; /* input text*/
requete += "&heurevisite="+document.getElementById("heurevisite").value; /* input text */
/* informations du responsable */
requete += "&respfirst="+document.getElementById("respfirst").value; /* input text */
requete += "&resplast="+document.getElementById("resplast").value; /* input text */
requete += "&respaddr="+document.getElementById("respaddr").value; /* input text */
requete += "&resptown="+document.getElementById("resptown").value; /* input text */
requete += "&resppostal="+document.getElementById("resppostal").value; /* input text */
requete += "&respphone="+document.getElementById("respphone").value; /* input text */
requete += "&respmail="+document.getElementById("respmail").value; /* input text*/
 
/* vérifie si guidée ou non */
if( document.getElementById("oguidee").checked) /* radio */
	requete += "&guidee=1";
else
	requete += "&guided=0";
/* vérifie si carnaval ou non */
if( document.getElementById("ocarnaval").checked) /* radio */
	requete += "&carnaval=1";
else
	requete += "&carnaval=0";
/* vérifie si Atelier papier ou non */
if( document.getElementById("oapapier").checked) /* radio */
	requete += "&apapier=1";
else
	requete += "&apapier=0";
/* vérifie si Fabrication papier */
if( document.getElementById("ofpapier").checked) /* radio */
	requete += "&fpapier=1";
else
	requete += "&fpapier=0";
/* vérifie si trésor ou non */
if( document.getElementById("otresor").checked) /* radio */
	requete += "&tresor=1";
else
	requete += "&tresor=0";
requete += "&montant=0";
connection.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
connection.send(requete);
if( connection.responseText.indexOf('Erreur: ') == -1 )
	window.location.href=connection.responseText;

Ceci est toutes la requête d'appel à la page d'insertion des données dans la BDD.

Je ne vois pas d'où provient le soucis ...

Dans la réponse, j'ai bien la valeur suivante pourtant (d'après Firebug du moins ) :

./../index.php
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h54   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
ben je ne vois toujours pas le teste sur le readystatus de ta requete ajax ??
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 10h05   #7
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
Mais euh

La semaine, j'ai poster sur une autre partie du forum, et on m'a dit que lors d'une requête synchrone, le send était bloquant.

Maintenant, je comprend peut être les choses de travers, mais je ne sais pas, suis peut être vraiment trop c**
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h38   #8
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Bonsoir,

Si index.php est à la racine du site, pourquoi ne pas faire simplement "/index.php" ? "./index.php" est équivalent à "index.php" (la page index.php situé dans le dossier courant)
Par contre si la page contenant le formulaire est à la racine du site, "./../index.php" ne fonctionnera pas... (on ne peut pas revenir d'un niveau au dessus de la racine)

Juste pour revenir sur l'utilisation de requête synchrone, je n'avais pas précisé dans l'autre thread que c'est très conseillé . On peut avoir le même résultat avec un code utilisant des requêtes asynchrones. Le véritable problème rencontré dans l'autre thread concernait l'oubli des headers de la requete POST. Est-ce bien justifié d'utiliser des requêtes synchrones ? (dangereux si la communication entre le client et le serveur est rompu après l'appel. Où, simplement, si le serveur est surchargé.)
nadox 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 23h41.


 
 
 
 
Partenaires

Hébergement Web