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

setni 8 Messages postés dimanche 16 décembre 2012Date d'inscription 11 mai 2014 Dernière intervention - 30 janv. 2014 à 10:44 - Dernière réponse : jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 30 janv. 2014 à 10:59
0
Merci
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.
Commenter la réponse de jordane45
setni 8 Messages postés dimanche 16 décembre 2012Date d'inscription 11 mai 2014 Dernière intervention - 30 janv. 2014 à 11:04
0
Merci
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
Commenter la réponse de setni
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - Modifié par jordane45 le 30/01/2014 à 11:31
0
Merci
<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
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 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>

Commenter la réponse de jordane45
setni 8 Messages postés dimanche 16 décembre 2012Date d'inscription 11 mai 2014 Dernière intervention - Modifié par setni le 30/01/2014 à 12:28
0
Merci
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>
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 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).
Commenter la réponse de setni
setni 8 Messages postés dimanche 16 décembre 2012Date d'inscription 11 mai 2014 Dernière intervention - 30 janv. 2014 à 12:59
0
Merci
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.
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 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 + "=([^;]*;?)");
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 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>

Commenter la réponse de setni
setni 8 Messages postés dimanche 16 décembre 2012Date d'inscription 11 mai 2014 Dernière intervention - 30 janv. 2014 à 13:49
0
Merci
merci beaucoup, sa fonctionne maintenant
jordane45 22144 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 21 août 2018 Dernière intervention - 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.
Commenter la réponse de setni

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.