Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, 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 22/02/2011, 10h25   #1
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
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 :
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 :
1
2
3
window.setTimeout(afficher(msg, 1), 2000);
... mais cela ne fait rien de particulier.

Comment faire alors ?

Merci d'avance.

A+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 10h36   #2
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
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 :
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+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 10h50   #3
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
il faut preciser dans ton ajax le type de retour attendu ...
__________________
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 22/02/2011, 10h57   #4
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
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+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 11h07   #5
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
Je viens d'essayer les 3 valeurs suivantes :

Code :
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+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 11h22   #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
http://www.quirksmode.org/blog/archi...ax_respon.html
__________________
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 22/02/2011, 11h31   #7
Futur Membre du Club
 
83pulse@gmail.com 83pulse@gmail.com
Inscription : février 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : 83pulse@gmail.com 83pulse@gmail.com

Informations forums :
Inscription : février 2011
Messages : 33
Points : 17
Points : 17
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...
kfa1983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 21h53   #8
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

Citation:
Code :
$reponse = "<?xml version='1.0' encoding='ISO-8859-1' ?>\n";
Les transactions AJAX de jQuery préfèrent et parfois imposent le utf-8.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 23h09   #9
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
Citation:
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...
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 07h57   #10
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
En fait je me suis dépanné comme cela :

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
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 :
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+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 18h41   #11
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 561
Points : 1 561
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 :
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
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/02/2011, 19h00   #12
Membre émérite
 
Inscription : septembre 2002
Messages : 1 634
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : septembre 2002
Messages : 1 634
Points : 998
Points : 998
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 :
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+
__________________
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Mister Nono est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h11.


 
 
 
 
Partenaires

Hébergement Web