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

jQuery Discussion :

L'utilisateur n'a pas le temps de lire le message


Sujet :

jQuery

  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut L'utilisateur n'a pas le temps de lire le message
    Bonjour,

    A partir du formulaire suivant : http://vente-camping-gsignature.com/...camping-FR.php j'envoie un mail à l'agence immobilière avec les coordonnées du client lors que le formulaire est bien rempli.

    Pour information, l'agence reçoit bien le mail.

    Le script JS pour faire cela est le suivant :

    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
    58
    <script type='text/javascript'>
               
            $(document).ready(function()
            {
                $('#boutonSubmit').click(function()
                {
                    afficher('ENVOI DU FORMULAIRE EN COURS', 0);
                    
                       var page = $('#idForm').attr('action');
                       var methode = $('#idForm').attr('method');
                       
                       $.ajax
                     ({
                         url: page,
                         type: methode,
                         cache: false,
                         async: false,
                         timeout: 4000,
                         data: $('#idForm').serialize(),
                         success: function(data)
                         {
                             // var obj = data.getElementsByTagName('message');
                             // var msg2 = obj[0].firstChild.nodeValue;
                             
                            var msg = $(data).find("message").text();                 
                             afficher(msg, 1);
                             // window.setTimeout(afficher(msg, 1), 2000);
                         },
                         error: function (XMLHttRequest, textStatus, errorTrows)
                         {
                             afficher("ERREUR : Votre demande n'a pas été envoyée. Veuillez recommencer. Merci.", 1);
                         }
                     });
                     
                     return false;
                   });
               });
        
               function afficher(data, status) {
                   afficherBouton(status);
                   // alert(data);
                   $('#message').empty();
                   $('#message').append(data);
               }
               
               function afficherBouton(status) {
                   if (status == 1)
                   {
                       $('#boutonSubmit').css('display','block');
                   }
                   else
                   {
                       $('#boutonSubmit').css('display','none');
                   }
               }
               
            </script>
    Quand le code PHP renvoi un message pour indiquer au client si cela s'est correctement déroulé ou non, ce message ne s'affiche pas. Il semble que AJAX renvoie directement la main au navigateur et donc le message est effacé immédiatement après son affichage. Donc l'utilisateur n'a pas le temps de visualiser ce message.

    J'ai bien ajouter le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    window.setTimeout(afficher(msg, 1), 2000);
    
    ... mais cela ne fait rien de particulier.

    Comment faire alors ?

    Merci d'avance.

    A+

  2. #2
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut
    Après tests complémentaires, le message est vide, c'est donc normal qu'il ne s'affiche pas.

    Il semble donc que soit le script PHP n'envoie pas bien le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    ...
    $reponse = "<?xml version='1.0' encoding='ISO-8859-1' ?>\n";
    $reponse .= "<message>";
    $reponse .= $message;
    $reponse .= "</message>";
     
    header('Content-Type: text/xml;charset=ISO-8859-1');
    echo $reponse;
    exit();
    ?>
    ...soit que la fonction AJAX ne sache pas décrypter ce message.

    Qu'en pensez-vous ?

    A+

  3. #3
    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 661
    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 661
    Billets dans le blog
    1
    Par défaut
    il faut preciser dans ton ajax le type de retour attendu ...
    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 !

  4. #4
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    il faut preciser dans ton ajax le type de retour attendu ...
    Merci pour ta réponse, mais comment préciser cela ? Par défaut, ce n'est pas du XML ?

    Merci pour ton aide.

    A+

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut
    Je viens d'essayer les 3 valeurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dataType: 'xml'
    dataType: 'html'
    dataType: 'script'
    ... mais le message n'est pas lu.

    Par contre, si je remplace le message de type chaine par un message de type entier, j'arrive à lire le message.

    Pourquoi ?

    A+

  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 661
    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 661
    Billets dans le blog
    1
    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 averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2011
    Messages : 37
    Par défaut
    Salut!

    Pourquoi tu mets un setTimeout? Jquery propose une option .delay nettement plus appropriée étant donné que tu utilises leur framework A part ça, j'ai pas bien compris s'il y a une échéance au message (msg, 1) qui s'affiche ou si c'est à l'utilisateur de fermer le message?

    Voyons voir...

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = "<?xml version='1.0' encoding='ISO-8859-1' ?>\n";
    Les transactions AJAX de jQuery préfèrent et parfois imposent le utf-8.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Les transactions AJAX de jQuery préfèrent et parfois imposent le utf-8.
    ... et comme de plus, certaines fonctions php comme json_encode (très pratique pour passer un tableau php à javascript), requièrent aussi l'utf-8, tu aurais tout intérêt à utiliser cet encodage...

  10. #10
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut
    En fait je me suis dépanné comme cela :

    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
    <script type='text/javascript'>
    
    $(document).ready(function()
    {
    $('#boutonSubmit').click(function()
    {
    afficher('ENVOI DU FORMULAIRE EN COURS', 0);
    
    var page = $('#idForm').attr('action');
    var methode = $('#idForm').attr('method');
    
    $.ajax
    ({
    url: page,
    type: methode,
    cache: false,
    async: false,
    timeout: 4000,
    data: $('#idForm').serialize(),
    dataType: 'xml',
    success: function(data)
    {
    var msg = $(data).find("message").text();
    
    if (msg == 0)
    {
    msg = "Votre demande a bien été envoyée à G&nbsp;SIGNATURE. Vous allez recevoir une réponse très prochainement.";
    }
    else if (msg == 1)
    {
    msg = "Veuillez vérifier la saisie des champs du formulaire avant d'envoyer votre demande à G&nbsp;SIGNATURE.";
    }
    else
    {
    msg = "Votre demande n'a pas pu être envoyée à G&nbsp;SIGNATURE. Prenez contact directement avec le cabinet d'affaires G&nbsp;SIGNATURE.";
    }
    
    afficher(msg, 1);
    },
    error: function (XMLHttRequest, textStatus, errorTrows)
    {
    afficher("ERREUR : Votre demande n'a pas été envoyée. Veuillez recommencer. Merci.", 1);
    }
    });
    
    return false;
    });
    });
    
    ...
    
    </script>
    Comme j'arrive enfin à réceptionner des entiers, j'affiche donc ensuite le bon message en fonction de la valeur retour.

    Mais pour faire propre et résoudre enfin ce problème : comment récupérer autre chose que des entiers car je désire lire des strings ?

    Le code PHP est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    header('Content-Type: text/xml'); 
    echo "<?xml version='1.0'?>\n";
    echo "<message>\n";
    echo $message . "\n";
    echo "</message>\n";
    exit();
    ... et tout le site est codé en iso-8859-1.

    A+

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Il y a des pistes ici et


    Mais bon, de nos jours il est vivement conseillé de coder en utf-8 car tu risque de rencontrer par la suite d'autres problèmes similaires en gardant l' ISO-8859-1. Donc pour faire les choses proprement il faudrait passer ton site en utf-8.
    Cela peut paraître beaucoup de travail mais il existe des fonctions faites sur mesure pour faire ça:
    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
     
    <table summary="UTF8_izer">
     
    <?php
     
    $dossier_iso  = 'iso';
     
    $dossier_utf8 = 'utf8';
     
     
     
    $handle = opendir($dossier_iso);
     
    while ($file = readdir($handle))
     
          { if (is_file($dossier_iso.'/'.$file))
     
               { $extension = substr($dossier_iso.'/'.$file, -3, 3);
     
                 if ($extension=='php' || $extension=='htm')
     
                    { echo '<tr><td>'.$file.'</td>'."\n";
     
                      $contenu = file_get_contents($dossier_iso.'/'.$file);
     
                      if ($contenu)
     
                         { $contenu_new = $contenu;
     
                           $contenu_new = utf8_encode($contenu_new);
     
                           $contenu_new = html_entity_decode($contenu_new,ENT_NOQUOTES,'UTF-8');
     
                           $conversion = file_put_contents($dossier_utf8.'/'.$file,$contenu_new);
     
                           echo '<td>'.($conversion ? 'OK' : '-----').'</td></tr>'."\n";
     
                         }
     
                         else
     
                         { echo '<td>Conversion non effectuée</td></tr>'."\n";
     
                         }
     
                    }  
     
               }
     
          }
     
    closedir($handle);
     
    ?>
     
    </table>

    Ainsi tu serais sur de bonnes bases pour tes dev à venir et cela te permettrait en plus de faire afficher tous les caractères étrangers et symboles dans ton site

  12. #12
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 246
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Il y a des pistes ici et


    Mais bon, de nos jours il est vivement conseillé de coder en utf-8 car tu risque de rencontrer par la suite d'autres problèmes similaires en gardant l' ISO-8859-1. Donc pour faire les choses proprement il faudrait passer ton site en utf-8.
    Cela peut paraître beaucoup de travail mais il existe des fonctions faites sur mesure pour faire ça :

    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
    <table summary="UTF8_izer">
     
    <?php
     
    $dossier_iso  = 'iso';
     
    $dossier_utf8 = 'utf8';
     
     
     
    $handle = opendir($dossier_iso);
     
    while ($file = readdir($handle))
     
          { if (is_file($dossier_iso.'/'.$file))
     
               { $extension = substr($dossier_iso.'/'.$file, -3, 3);
     
                 if ($extension=='php' || $extension=='htm')
     
                    { echo '<tr><td>'.$file.'</td>'."\n";
     
                      $contenu = file_get_contents($dossier_iso.'/'.$file);
     
                      if ($contenu)
     
                         { $contenu_new = $contenu;
     
                           $contenu_new = utf8_encode($contenu_new);
     
                           $contenu_new = html_entity_decode($contenu_new,ENT_NOQUOTES,'UTF-8');
     
                           $conversion = file_put_contents($dossier_utf8.'/'.$file,$contenu_new);
     
                           echo '<td>'.($conversion ? 'OK' : '-----').'</td></tr>'."\n";
     
                         }
     
                         else
     
                         { echo '<td>Conversion non effectuée</td></tr>'."\n";
     
                         }
     
                    }  
     
               }
     
          }
     
    closedir($handle);
     
    ?>
     
    </table>


    Ainsi tu serais sur de bonnes bases pour tes dev à venir et cela te permettrait en plus de faire afficher tous les caractères étrangers et symboles dans ton site
    Merci pour tes suggestions.

    Comme j'ai réussi à me dépanner, ce site restera comme cela puisque qu'il est fonctionnel.

    Je prends note de ta solution pour la prochaine fois.

    A+

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

Discussions similaires

  1. Utilisateur loggé ou pas
    Par Eco dans le forum Struts 1
    Réponses: 5
    Dernier message: 06/03/2007, 16h49
  2. [TP] Pas le temps de voir les résultats à l'écran
    Par bonomsoleil dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 08/02/2006, 23h49
  3. L'utilisateur n'est pas asoocié à une connexion SQLServer...
    Par NotANumber dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/01/2006, 16h27
  4. [Début.C#] Je n'ai pas le temps de voir se qui s'affiche!!!!
    Par sylvain_c42 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2005, 17h48

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