La fonctione créer un cookie ne se lance pas [Résolu]

Signaler
Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014
-
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
-
Bonjour,

n'obtenant pas de réponse sur le forum d'openclassroom je poste ici:

Bonjour,

J'ai suivi ce tutoriel :http://fr.openclassrooms.com/informatique/cours/ajax-et-l-echange-de-donnees-en-javascript/ecrire-un-cookie-1

Mais le test du code ne fonctionne pas, voici le processus en entier:

<body>
<form name="form" onSubmit="creercookie()" action="test.html">
<input type="text" name="input" id="input">
<input type="text" name="input2" id="input2">
<input type="submit"  value="ok">
</form>

<script type="text/javascript">

function creercookie(sName, sValue) {
        var today = new Date(), expires = new Date();
        expires.setTime(today.getTime() + (365*24*60*60*1000));
        document.cookie = sName + "=" + encodeURIComponent(sValue) + ";expires=" + expires.toGMTString();

alert ("Enregistrer");}
</script>
</body>
</html>


Le script de lecture sur la seconde page :test.html me renvois l'erreur firebug suivante :

ReferenceError: sName is not defined


var oRegex = new RegExp("(?:; )?" + sName + "=([^;]*;?");

J'ai donc inseré un petit script de test comme ceci:

var pos = document.cookie.indexOf( "sName" );
if( pos >= 0){
alert('Le cookie existe');
}
else {alert ("le cookie n'existe pas");}
Et ce test me renvois "le cookie n'existe pas"

Quelqu'un a-t-il ce problème? Ce programme sera converti en application mobile par phone gap build par la suite. et servira à afficher une donnée saisie par l'utilisateur à chaque lancement de l'appli.

Merci d'avance

6 réponses

Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
Bonjour,


TU as une fonction creercookie dans laquelle tu es censé passer deux paramètres : sName et sValue.
function creercookie(sName, sValue) { 


D'un autre côté.. ton formulaire appelle la fonction SANS paramètres....
onSubmit="creercookie()" 
...

Donc... tu ne nommes jamais ton cookie... donc.. il n'existe pas.
CQFD.
Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014

Bonjour,

merci pour cette réponse mais cela ne fonctionne pas.
J'ai modifié comme ceci
onSubmit="creercookie(sName, sValue)"
et comme ceci
onSubmit="creercookie('sName', 'sValue')"
Mais la fonction ne se lance même pas car je n'ai plus l'alerte "enregistrer".

Merci
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
<html>
<head>
<title>TEST</title>
</head>
<body>
<form name="form" onSubmit="creercookie('unNom','uneValeur')" action="test.html">
<input type="submit" value="ok">
</form>

<script type="text/javascript">
function creercookie(sName, sValue) {
alert("sName : " + sName + "   sValue: " + sValue );

  var today = new Date(), expires = new Date();
  expires.setTime(today.getTime() + (365*24*60*60*1000));
  document.cookie = sName + "=" + encodeURIComponent(sValue) + ";expires=" + expires.toGMTString();

  alert ("Enregistrer");}
</script>
</body>


</html> 


Au passage... pour l'instant tu ne semble pas utiliser les INPUT de ton formulaire...
Je les ai donc retiré.


NB : Le cookie aura pour nom : "unNom" , la variable que j'ai envoyé à la fonction...

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
Bien sur .. il faut modifier le code de la seconde page... pour que le nom du cookie corresponde à celui que tu as utilsé lors de sa création.
Toujours dans mon exemple : "unNom"

<html>
<head>
<title>TEST2</title>
</head>
<body>

<script type="text/javascript">
var pos = document.cookie.indexOf( "unNom" );
if( pos >= 0){
alert('Le cookie existe');
}
else {alert ("le cookie n'existe pas");} 
</script>
</body>


</html>

Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014

Merci beaucoup,

La fonction se lance mais j'ai toujours l'erreur firebug:
ReferenceError: sName is not defined


var oRegex = new RegExp("(?:; )?" + sName + "=([^;]*;?");

Peut-etre que sa vient de la page test.html
Voici le code :

<html>
<head>
<meta charset="utf-8">
<title>Document sans nom</title>
<script type="text/javascript">

var pos = document.cookie.indexOf( "sName" );
if( pos >= 0){
alert('Le cookie existe');
}
else {alert ("le cookie n'éxiste pas");}
</script>
</head>

<body>
<div id="page">Votre numéro d'abonné est : <script type="text/javascript">
var oRegex = new RegExp("(?:; )?" + sName + "=([^;]*;?");
if (oRegex.test(document.cookie)) {
/*return*/ decodeURIComponent(RegExp["$1"]);}
/*else {return true;}*/

</script></div>
</body>
</html>
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
sName est une variable ... a quel endroit dans cette page l'initie tu avec une valeur ??

au pire.. pour tes tests.. remplace sName par 'sName ' (ou par le nom de la variable que tu as utilisé dans ta page précédente pour nommer ton cookie).
Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014

En plaçant 'unNom' ou 'sName', j'ai la même erreur. avec unNom ou sName, il s'agit d'une autre :
SyntaxError: unterminated parenthetical


var oRegex = new RegExp("(?:; )?" + 'sName' + "=([^;]*;?");

Néanmoins, j'ai à présent le message : "le cookie existe", en remplaçant ("sName") par ("unNom") dans le petit test du début. Reste plus qu'a le lire.
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
Le message d'erreur n'est pas le même... là il te parle des parenthèses...
il t'en manque une dans ton regexp.
var sName = "unNom";
var oRegex = new RegExp("(?:; )?" + sName + "=([^;]*;?)");
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
<html>
<head>
<title>TEST2</title>
</head>
<body>

<script type="text/javascript">
var pos = document.cookie.indexOf( "unNom" );
if( pos >= 0){
alert('Le cookie existe');
}
else {alert ("le cookie n'existe pas");} 
</script>
<div id="page">Votre numéro d'abonné est : </div> 
<script type="text/javascript">
var sName = "unNom";
var oRegex = new RegExp("(?:; )?" + sName + "=([^;]*;?)");
if (oRegex.test(document.cookie)) {
  var monDiv = document.getElementById("page");
   monDiv.innerHTML = monDiv.innerHTML + decodeURIComponent(RegExp["$1"]);
 }
 
</script>
</body>
</html>

Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014

merci beaucoup, sa fonctionne maintenant
Messages postés
28878
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
332
Je m'en doute..c'est moi qui l'ai fait :-)

Plus sérieusement;... si ton souci est résolu, merci de cliquer sur le TAG : Marquer comme résolu en dessous du titre de ta question tout en haut afin de clore cette discussion.