Zugriff auf die jQuery-Objekt in JADE
Beim login, Speichere ich die userId in ein jQuery-cookie, so dass ich darauf zugreifen, indem $.cookie('userId')
.
Nun, ich bin versucht, darauf zugreifen von Jade,
- if ($.cookie('userId') === userId)
Bekomme ich eine Fehlermeldung
$ ist nicht definiert
Wie kann ich den Zugriff auf die cookie ?
Mein code:
- if (($.cookie('userId')) === userId)
input(type='submit', value='Move')
else
input(type='submit', disabled, value='Move'')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du scheinst zu missverstehen Konzepte. Lassen Sie mich Ihnen einen Vortrag. 😉
Grundlagen. Cookie gespeichert wird auf der client-Seite. Also mit jQuery
$.cookie('userId')
abrufen wird es, wenn dieses Skript läuft auf der client-Seite.Aber hierzu verwenden Sie die JADE-Template-engine auf der server-Seite. Damit du nicht auf senden, die Seite auf der client-Seite noch. Also was die Cookies tun, die Sie abrufen möchten? Es ist kein cookie, weil Sie am server.
Gibt es mehr. Läuft
$.cookie('userId')
den Fehler auslöst, da Sie auf der server-Seite. Es gibt keine$
Objekt. Und es kann nicht sein, weil Sie nicht verwenden, jQuery auf server-Seite (naja, eigentlich kann man, aber das ist irrelevant im moment). Hast du definieren$
Objekt in Ihrem Weg-system? Oder hast du Helfer definieren$
? Ich denke nicht so.Express+JADE tutorial. Nun lassen Sie mich Ihnen ein kurzes tutorial. Sagen, Sie haben einen Blick (in
app.js
)Nun in
index.jade
können Siecode
als eine variable. So schreiben Sie Ihreindex.jade
zum Beispiel so:und jetzt funktioniert es! Sie können auch JavaScript-Funktionen in Vorlage, wenn Sie vorgeben, Sie. Zum Beispiel (in deinem
app.js
)dann in
index.jade
Vorlage, die Sie verwenden können,und sogar kombinieren diese beiden Konzepte
Auf cookie oder nicht cookie. Wenn Sie wirklich brauchen, um cookies zu verwenden (und man sollte nicht außer für Sitzungen oder CSRF zum Beispiel), dann müssen Sie die Verwendung von client-side JavaScript. Dies bedeutet, dass Sie brauchen, um hinzuzufügen (nach jQuery)
den
index.jade
Datei, und schreiben Siemy-script.js
wie dieseAber es gibt mehrere Probleme mit dieser Lösung. Zuerst: was ist
userId
(zweiter Teil von Gleichheit)? Sie müssen vorgeben, es in Ihremindex.jade
. Zum Beispiel mitund hinzufügen
user
Objekt in Ihrem Weg. Zweitens: cookies sind lokale Variablen. Sie erfordert zusätzliche server-code, die ich tun nicht, was Sie möchte. Dies macht die Aufrechterhaltung der app härter. Und schließlich: speichern einer Benutzer-id in einem cookie zu sein scheint, sinnlos. Der Letzte Benutzer nicht einmal wissen, dass es eigene id. Der server wissen muss! Sitzungen-system kommt hier praktisch.Erwähnenswert. Der code, den Sie schrieb, zeigt uns, dass man nicht unterscheiden kann zwischen server-side und client-side JavaScript. Die Lösung zu deinem problem ist zu lernen, lernen und lernen. Lesen Sie die tutorials und alles über JADE -, Express-und Node.js.
Was @Wunderlich sagte, ist richtig. Sie versuchen, server-Seite oder client-Seite.
Wenn der cookie gesetzt ist, sollten Sie in der Lage sein, um Zugriff auf server-wie so