La fonctione créer un cookie ne se lance pas

Résolu
setni
Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014
- Modifié par kazma le 30/01/2014 à 12:08
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
- 30 janv. 2014 à 14:31
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

jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 10:59
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.
0
setni
Messages postés
8
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
11 mai 2014

30 janv. 2014 à 11:04
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
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
Modifié par jordane45 le 30/01/2014 à 11:31
<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
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 11:47
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>

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

Modifié par setni le 30/01/2014 à 12:28
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>
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 12:46
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).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

30 janv. 2014 à 12:59
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.
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 13:06
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 + "=([^;]*;?)");
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 13:11
<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>

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

30 janv. 2014 à 13:49
merci beaucoup, sa fonctionne maintenant
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
30 janv. 2014 à 14:31
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.
0