Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost][HTML/Javascript]Data uit cookies ophalen geeft problemen  (gelezen 1324 keer)

Offline Joshua822

  • Lid
Hallo allemaal.

Ik heb weer een ernstig probleem in de broncode voor de website die ik maak voor een schoolproject.

Het probleem is als volgt: ik moet de invoer in invoervelden zoals textareas en tekstvakken bewaren voor nieuwe sessies. Het bewaren zelf lukt goed, maar bij het opnieuw laden van de pagina de invoervelden weer vullen met de waarde uit de cookies blijkt toch een moeilijke opgave te zijn. Alleen het eerste invoerveld wordt ingevuld met de waarde uit de cookies, het tweede wordt niet gevuld terwijl het wel gevuld zou moeten worden.

Ik zit al uren voorbeeldcode op te zoeken op het internet, maar ik kan de fout echt niet ontdekken.

Misschien dat jullie raad weten? Hier is mijn code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org//1999/xhtml" xml:lang="nl" lang="nl">
 <head>
  <title>Economische topper - Pagina 222</title>
  <link rel="stylesheet" type="text/css" href="opmaak.css" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <script type="text/javascript">
   function SlaDataOp ( ) {

       document.cookie = "vraag1=" + document.forms[ "invoer" ][ "vraag1" ].value
       document.cookie = "vraag2=" + document.forms[ "invoer" ][ "vraag2" ].value;

   }
   function HaalDataOp ( ) {

       var CookieArray, Index, Cookie, Waarde;

       CookieArray = document.cookie.split ( ";" );

       for ( Index = 0; Index < CookieArray.length; Index = Index + 1 ) {

           Cookie = CookieArray[Index].substr( 0, CookieArray[Index].indexOf ( '=' ) );
           Waarde = CookieArray[Index].substr( CookieArray[Index].indexOf ( '=' ) + 1);

           if ( Cookie === "vraag1" ){
               document.forms[ "invoer" ][ "vraag1" ].value = Waarde;
           }
           if ( Cookie === "vraag2" ){
               document.forms[ "invoer" ][ "vraag2" ].value = Waarde;
           }
       }
   }
  </script>
 </head>
 <body onload="HaalDataOp()" onunload="SlaDataOp()">
  <h2 class="verkennen_header">Info</h2>
  <ul>
   <li>Katleen zal zelf elke dag vers roomijs maken. Om het te verkopen dacht ze eraan in de <br />
       namiddag rond te rijden met een ijsjeskar (van begin april tot eind september) en 's avonds <br />
       in de winkel ijs te verkopen. Tijdens de winter zou ze alleen in de winkel haar ijs verkopen. <br />
       Het vergt heel wat rekenwerk om de totale kosten voor één jaar te berekenen. 22 600 EUR. <br />
       Nog moeilijker voor Katleen is het om de verwachte opbrengsten te schatten, maar ze denkt <br />
       dat het toch mogelijk moet zijn om een jaarlijkse omzet of verkoopcijfer van 40 000 EUR te <br />
       realiseren.
   </li>
  </ul>
  <img class="illustratie_midden" src="./illustraties/p222_illustratie_1.png" alt="Katleen droomt van een ijsjeskar voor haar bedrijf" />
  <p>
   <form name="invoer">
    <ol>
     <li>Maak een zo volledig mogelijke lijst van de kosten die Katleen zal moeten maken om haar zaak draaiende te houden: <br /><br />
         <textarea class="normaal_antwoord" name="vraag1"></textarea><br /><br /></li>
     <li>Welke opbrengsten verwacht Katleen? <br /><br />
         <input type="text" name="vraag2" /><br /><br /></li>
     <li>Is het bedrijf van Katleen volgens haar verwachtingen succesvol? Kun je dat berekenen?</li>
    </ol>
   </form>
  </p>
  <p><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p>
 </body>
</html>

Hulp wordt erg gewardeerd.

Met voorbaat hartelijke dank,
Joshua.
« Laatst bewerkt op: 2011/02/22, 20:43:50 door Joshua822 »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: [HTML/Javascript]Data uit cookies ophalen geeft problemen
« Reactie #1 Gepost op: 2011/02/21, 22:53:18 »
Deze twee regels zien er niet goed uit.
document.cookie = "vraag1=" + document.forms[ "invoer" ][ "vraag1" ].value
document.cookie = "vraag2=" + document.forms[ "invoer" ][ "vraag2" ].value
Eerst geef je document.cookie de waarde "vraag1". En daarna de waarde "vraag2". Dus de cookie zal alleen die laatste waarde bevatten.
Bij het ophalen zie ik dat je de verschillende waarden split op ;. Misschien werkt het als je er het volgende van maakt:
document.cookie = "vraag1=" + document.forms[ "invoer" ][ "vraag1" ].value + ";"
document.cookie += "vraag2=" + document.forms[ "invoer" ][ "vraag2" ].value + ";"
+= plakt de string als het goed is erachter. En ik zet er nu een ; achter.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: [HTML/Javascript]Data uit cookies ophalen geeft problemen
« Reactie #2 Gepost op: 2011/02/21, 23:27:54 »
De property 'cookie' van het document-object bevat alle cookies gescheiden door een puntkomma plus een spatie. Als je split op alleen de puntkomma, krijgt het tweede (en volgende) item een voorloopspatie. Je kunt dit dus oplossen door te splitten op "; " (spatie erachter) of door in de tweede if te vergelijken met " vraag2" (spatie ervoor).

Overigens zou ik de teksten niet 'zomaar' in cookies zetten. Als iemand een puntkomma opneemt in het antwoord, wordt het een zootje. Je kunt het beter gecodeerd opslaan, als base64 of zo. Geen idee of dat makkelijk gaat, trouwens. Ik ben niet zo thuis in JavaScript.
« Laatst bewerkt op: 2011/02/21, 23:36:59 door grizzler »

Offline Joshua822

  • Lid
Re: [HTML/Javascript]Data uit cookies ophalen geeft problemen
« Reactie #3 Gepost op: 2011/02/22, 20:43:36 »
Bedankt voor jullie antwoorden Grizzler en Rachid. Grizzler's antwoord heeft het probleem uiteindelijk opgelost, maar ook hartelijk dank voor jouw antwoord Rachid!

En ja, Grizzler, er zijn inderdaad forse beperkingen aan deze functies. En ik zou me ook eens inlezen over deze kwestie. Maar het gaat om een webapplicatie die we ontwikkelen voor het vak economie op school. We moeten namelijk een product maken en hier rond de marketing verzorgen. De bedoeling is dus dat we alleen maar het product moeten demonstreren, we moeten het niet verkopen met de bedoeling dat het ook echt gebruikt moet worden. Daarom is dit voor ons groepje niet echt een probleem.

Maar ik zal er wel eens naar kijken als ik niet meer zoveel met school bezig moet zijn, want het zal vast heel nuttig zijn in de toekomst om dit te weten!