| Autor | Zpráva | ||
|---|---|---|---|
| JardaB Profil |
#1 · Zasláno: 24. 9. 2018, 10:22:24
Zdravím,
netuším, proč mi nefunguje následující: function getCookie(nazevKukiny)
{
kukiny = document.cookie.split(";");
html = ""; hodnota="neexistuje";
for (i in kukiny){ // procházím pole kukin
jednaKukina = kukiny[i].split("=");
html += jednaKukina[1]+"<br>";
if (jednaKukina[0] == nazevKukiny) {hodnota=jednaKukina[1];}
}
return hodnota;
}Když si dám vypsat vše, tak tam jsou. Stejně tak když dám vypsat proměnnou html, která načítá hodnoty tak tam jsou také. Když ale zavolám funkci s jakýmkoliv názvem existující cookie, tak mám vráceno neexistuje |
||
| Radek9 Profil |
#2 · Zasláno: 24. 9. 2018, 10:39:22
JardaB:
Cookies totiž bývají oddělené nejen středníkem, ale i mezerou (možná i jiným bílým znakem). Obecně je vhodné je tedy splitnout taktko: document.cookie.split(/;\s*/) Taktéž doporučuji proměnné deklarovat pomocí var, takhle si akorát zaneřádíš globální objekt. Stejně tak není vhodné procházet kolekci pomocí for...in cyklu.
function getCookie(name) {
var cookies = document.cookie.split(/;\s*/);
for (var i = 0; i < cookies.length; ++i) {
var cookie = cookies[i].split('=');
if (cookie[0] === name) return cookie[1]; // při shodě vrátíme hodnotu cookie
}
// pokud se cookie nenajde, vrátí se defaultně undefined
} |
||
| Joker Profil |
#3 · Zasláno: 24. 9. 2018, 10:40:12
JardaB:
V tom případě musí být problém s podmínkou jednaKukina[0] == nazevKukiny.
A ten problém je, že podle RFC mají cookies být oddělené středníkem a mezerou, přičemž tam mohou být ještě další bílé znaky (více informací (anglicky) Document.cookie - Web APIs | MDN ), takže jednaKukina[0] skutečně není přesně název cookie. jednaKukina[0].trim() by mělo dát správný výsledek. |
||
| JardaB Profil |
#4 · Zasláno: 24. 9. 2018, 10:47:16
Radek9:
Funguje. Děkuji za rady a připomínky... |
||
|
Časová prodleva: 8 let
|
|||
0