• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] jQuery und Cookies

jacky_X

New member
Hey Leute,
ich studiere Informationsdesign und belege gerade die Vorlesung in der wir Javascript behandeln.
Mithilfe von Drag and Drop möchte ich sozusagen dem Nutzer eine Favoritenauswahl ermöglichen, die ich mit Cookies (welche die Prüfungsleistung enthalten soll) speichern möchte.
Mein Problem ist nur, dass ich nicht genau weiß welchen Wert und wie ich diesen in das Cookie speichern soll.

Ich hoffe mir kann jemand helfen.
Das ist der zugehörige Code:

Code:
var hinzugefuegt = new Array(0, 0, 0);
        
        $(function () {
            var anzahl = 0;
            $("#favoriten").draggable({
                revert: "valid"
            });
            $("#work1").droppable({ //Erstes Werk 
                accept: "#favoriten",
                drop: function (event, ui) {
                    if (hinzugefuegt[0] == 0) {
                        anzahl++; //Anzahl der Favoriten insgesamt hoch setzten
                        hinzugefuegt[0] = 1; //Schon einmal hinzugefügt - kein weiteres Mal möglich
                    }
                    $("#favoriten") // Draggable Objekt
                        .find("p")
                        .html(anzahl); //Anzahl der Favoriten insgesamt
                    $("#work1") //Droppable Ziel
                        .find("p")
                        .html("hinzugefügt")//Wenn hinzugefügt = Text ersetzen
                        .effect("bounce", "slow"); //Wenn hinzugefügt = Effekt
                }          
            });
            

            $("#work2").droppable({ //Zweites Werk
                accept: "#favoriten",
                drop: function (event, ui) {
                    if (hinzugefuegt[1] == 0) {
                        anzahl++; //Anzahl der Favoriten insgesamt hoch setzten
                        hinzugefuegt[1] = 1; //Schon einmal hinzugefügt - kein weiteres Mal möglich
                    }
                    $("#favoriten") //Draggable Objekt
                        .find("p")
                        .html(anzahl); //Anzahl der Favoriten insgesamt
                    $("#work2") //Droppable Ziel 
                        .find("p")
                        .html("hinzugefügt") //Wenn hinzugefügt = Text ersetzen
                        .effect("bounce", "slow"); //Wenn hinzugefügt = Effekt
                }
            });

            $("#work3").droppable({ //Drittes Werk
                accept: "#favoriten",
                drop: function (event, ui) {
                    if (hinzugefuegt[2] == 0) {
                        anzahl++; //Anzahl der Favoriten insgesamt hoch setzen
                        hinzugefuegt[2] = 1; //Schon einmal hinzugefügt - kein weiteres Mal möglich
                    }
                    $("#favoriten")
                        .find("p")
                        .html(anzahl); //Anzahl der Favoriten insgesamt
                    $("#work3")
                        .find("p")
                        .html("hinzugefügt") //Wenn hinzugefügt = Text ersetzen
                        .effect("bounce", "slow"); //Wenn hinzugefügt = Effekt
                }
            });
        });
HTML:
<div id="favoriten">
            <!-- Draggable - Favoriten Auswahl -->
            <p>0</p>
            <!-- Anzahl der Favoriten -->
        </div>

        <div id="work1" value="hinzugefügt" class="workstyle">
            <!-- Droppable - Arbeitsprobe1 -->
            <p>1</p>
            <!-- Rückmeldung in "hinzugefügt" bei erfolgreichem Droppable -->
        </div>

        <div id="work2" class="workstyle">
            <!-- Droppable - Arbeitsprobe2 -->
            <p>1</p>
            <!-- Rückmeldung in "hinzugefügt" bei erfolgreichem Droppable -->
        </div>

        <div id="work3" class="workstyle">
            <!-- Droppable - Arbeitsprobe3 -->
            <p>1</p>
            <!-- Rückmeldung in "hinzugefügt" bei erfolgreichem Droppable -->s
        </div>
 
Zuletzt bearbeitet:
Mach aus deinen Daten einen String und sende es an setCookie.
PS: Verwende kein ";" als Trennzeichen.
Code:
/*
  * Cookie speichern
  * @param {string} cname = Kennung des Cookie
  * @param {string} cvalue = zu speichernde Daten
  * @param {string} exdays = Speicherdauer in Tagen
  */
function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));  //umrechnen in Milisekunden
  var expires = "expires="+d.toUTCString();
  document.cookie = cname + "=" + cvalue + "; " + expires;
}
/*
 * Cookie lesen
 * @param {string} cname = Kennung des Cookie
 * @returns {string} wenn kein Cookie vorhanden ist der string leer
 */
function getCookie(cname) {
 var name = cname + "=";
 var ca = document.cookie.split(';');
 for(var i=0; i<ca.length; i++) {
     var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1);
     if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
 } 
 return "";
 
Ich würde die Daten, die du speichern willst, im JSON-Format in das Cookie schreiben (JSON.stringify() und JSON.parse()). Dann kannst du (fast) beliebige Datenstrukutren schnell und einfach speichern/laden.

PS: Ich hatte mal was zu Cookies geschieben.
PPS: Dir ist hoffentlich klar, dass der Benutzer Cookies nach belieben verändern kann. Somit würde ich Prüfunsergebnisse da nicht wirklich speichern. Kann sich ja dann jeder die volle Punktzahl geben...
 
Zurück
Oben