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 :

Redirection par chemin relatif


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	window.location.assign(connection.responseText);
     
    ou
     
    	window.location.href=connection.responseText;
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ta requete ajax me semble un peu courte ...
    tu testes le readystatus ?
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    Bon vous voulez du code, alors en voilà :

    Code JAVASCRIPT : 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
    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

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben je ne vois toujours pas le teste sur le readystatus de ta requete ajax ??
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  7. #7
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    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**

  8. #8
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    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
    Par défaut
    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é.)

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/10/2011, 11h26
  2. remplacer chemin absolu par chemin relatif
    Par alaninho dans le forum Général Python
    Réponses: 11
    Dernier message: 19/05/2011, 11h23
  3. [OpenOffice][Texte] [Macro] : manipuler un fichier texte en chemin relatif par rapport au document
    Par spiral dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 15/01/2009, 17h10
  4. Lier 2 classeurs par chemin relatif
    Par Laestic dans le forum Excel
    Réponses: 2
    Dernier message: 10/01/2008, 17h08
  5. Chemin relatif par rapport à un fichier
    Par thibouille dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2007, 20h43

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