Ustawianie ciasteczka przez JavaScript

0

Napisałem prosty system w ASP.NET, który w pewnym momencie ustawia cookie za pomocą JavaScript:

var imie = document.getElementById('ContentPlaceHolder1_TextBoxDaneKlienta_Imie').value;
var nazwisko = document.getElementById('ContentPlaceHolder1_TextBoxDaneKlienta_Nazwisko').value;
var zestaw = document.getElementById('ContentPlaceHolder1_TextBoxZestaw_WyborKlienta').value;
document.cookie = "name" + "=" + imie + " " + nazwisko + " " + zestaw + "; 1" + "; path=/";

Metoda działa, ale tylko na Chrome. Co jest tego powodem?

0

RFC2965 mówi:

Mechanism, it is defined (section 3.3.2) that browsers should reject cookies when any of the following rules are true:

The value for the Path attribute is not a prefix of the request-URI.</li> The value for the Domain attribute contains no embedded dots, and the value is not .local.</li> The effective host name that derives from the request-host does not domain-match the Domain attribute.</li> The request-host is a HDN (not IP address) and has the form HD, where D is the value of the Domain attribute, and H is a string that contains one or more dots.</li> The Port attribute has a “port-list”, and the request-port was not in the list.</li> http://chipsandtv.com/articles/localhost-firefox-cookies

Czyli może to być np. problem z domenami. Ustaw odpowiednią domenę.

0

Ustawiłem odpowiednią domenę. Dla przykładu: domain=nazwa.domena.pl. Dalej nie działa.

0

Problemem jest pewnie to, że IE nie rozróżnia atrybutu NAME i ID. FF natomiast rozróżnia.
W FF musisz podać atrybut ID zamiast NAME.

var imie = document.getElementById('TuMusiBycIDaNIEatrybutNAME').value;

http://bytes.com/topic/javascript/answers/552706-getelementbyid-problems-firefox

0

Dzięki za odpowiedź. W oczekiwaniu na nią wymyśliłem chyba lepsze rozwiązanie. Ogólnie cała sprawa dotyczy "uploadify". Sprawę sobie trochę utrudniłem ponieważ dodane przez JS zdjęcia ładuję bezpośrednio na google picasa - poprzez ich API. Wszystko działa mi poprawnie na Google Chrome. W tej chwili wywaliłem ciasteczka i zmienne z kodu (nazwa dodawanego albumu) przesyłam jako parametry POST'a.

Mój problem polega na tym, że muszę jeszcze zapisać w sesji (chyba, że jest jakieś inne rozwiązanie), albumid i picasaurl. Pierwsza z nich odpowiada za to, żeby kolejno dodawane zdjęcia były ładowane do tego samego albumu, a druga "zwraca" link do tego albumu (zapisuje go później w bazie). Tak jak wyżej napisałem na Google Chrome wszystko działa. Z tego co widzę po debuggu to dane sesji działają tylko w obrębie handlera (upload.ashx). Zdjęcia ładują się do jednego albumu (albumid jest wykorzystywany tylko w obrębie handlera), picasaurl nie zostaje "zwrócona" bo jej wartość to null w obrębie np. button click czy page load.

Oczywiście albumid mimo, że nie jest potrzebny też jest niedostępny (jako null) ponieważ w page load chcę zerować obie wartości (albumid, picasaurl), żeby pisząc kolejną ankietę zdjęcia nie trafiły do tego samego albumu.

Bardzo proszę o pomoc, bo w tej chwili każdy kto skorzysta z systemu (jest opublikowany), może mi grubo namieszać w zdjęciach.

Tak ustawiam sesję w handlerze:

    if (context.Session["albumid"] == null)
        context.Session["albumid"] = albumid;
    else
        albumid = context.Session["albumid"].ToString();
0

Problem rozwiązany. Dzięki za pomoc. Dla potomnych opiszę. Cały mój problem polegał na tym, że tworzyły mi się dwie sesje. Pierwsza ta domyślna, w której chciałem przechowywać dane, a druga przez flash'a. Uploadify jest oparte właśnie o tą nieszczęsną technologię. Może i dałoby się połączyć te dwie sesje - miliony ludzi się z tym zmaga na forach, ale szkoda zachodu. Lepiej zapłacić za uploadifive (płatna wersja uploadify) i święty spokój.

1 użytkowników online, w tym zalogowanych: 0, gości: 1