2010-02-10 5 views
13

Używam "Cookie Plugin" by Klaus Hartl do dodawania lub aktualizowania plików cookie pod numerem $(document).ready. Mam kolejne wydarzenie, które ma na celu iterowanie wszystkich plików cookie i zrobienie czegoś z wartością każdego cookie. Jak mogę powtórzyć kolekcję plików cookie i uzyskać identyfikator i wartość każdego z nich? cośJak mogę iterować pliki cookie za pomocą jquery (lub tylko javascript)?

myślę tak:

$.cookie.each(function(id, value) { 
      alert('ID='+id+' VAL='+value); 
     }); 

Odpowiedz

18

Jeśli chcesz po prostu patrzeć na ciasteczka to nie jest takie trudne bez dodatkowego wtyczka:

$.each(document.cookie.split(/; */), function() { 
    var splitCookie = this.split('='); 
    // name is splitCookie[0], value is splitCookie[1] 
}); 
+0

Doskonałe rozwiązanie. Podzielenie za pomocą wyrażenia regularnego jest znacznie lepsze. –

+1

Wszystkie poprawne z wyjątkiem definicji funkcji w pierwszym wierszu. Zmień funkcję (cookieString) na funkcję (index, cookieString) i już ją masz! –

+1

o rację - przepraszam! Myślę też, że jQuery wiąże "to" z każdym elementem, więc możesz go również wyłączyć i po prostu podzielić "to" wewnątrz funkcji. – Pointy

3

dobrze to raczej łatwe w zwykły javascript:

var keyValuePairs = document.cookie.split(';'); 
for(var i = 0; i < keyValuePairs.length; i++) { 
    var name = keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('=')); 
    var value = keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1); 
} 
+1

Uważaj na wiodące miejsca! Powinieneś podzielić się za pomocą wyrażenia regularnego /; */zamiast samego ciągu ";". – Pointy

+0

całkiem dobrze, dziękuję za wskazanie, pointy –

+0

Podoba mi się to rozwiązanie, ponieważ pozwala na równe znaki w wartościach ciasteczek. – spb

0

Drugie rozwiązanie tworzy białe spacje przed nazwą, co utrudnia debugowanie błędy.

var keyValuePairs = document.cookie.split(/; */); 
for(var i = 0; i < keyValuePairs.length; i++) { 
    var name = keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('=')); 
    var value = keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1); 
    ... 
Powiązane problemy