Avatar billede kahs Nybegynder
24. august 2005 - 10:48 Der er 27 kommentarer og
1 løsning

Kan ikke oprette en cookie i asp.net og hente den i javascript?

Hej Eksperter

Jeg har en apsx side, som laver en masse sjov og herefter opretter to cookies:

Dim cookie_user = New HttpCookie("cookie", str_value)
Response.Cookies.Add(cookie_user)

Dim cookie_id = New HttpCookie("cookieId", str_id)
Response.Cookies.Add(cookie_id)

Herefter skal jeg fra en andenside hente de to cookies med java script:

function getCookie(name) {
var start = document.cookie.indexOf(name + "=");
return document.cookie.substring(start);
}

var value = getCookie("cookie");
var valueid = getCookie("cookieId");

Men jeg får ikke mine værdier fra ASPX siden ud kun værdien ASP.NET_SessionId= og en helt masse tal og bogstaver.

Hvad er det der går galt og hvad skal jeg gøre anderledes?

- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 10:54 #1
det er en liste af key/value pairs du får at arbejde med i dit javascript... du skal selv stå for at suge de oplysninger du skal bruge ud.

http://iamcal.com/publish/articles/js/cookies/

mvh
Avatar billede kahs Nybegynder
24. august 2005 - 11:18 #2
Og alligevel ikke...?
Hvis jeg kalder alle cookies får jeg kun en og det er ASP.NET_SessionId= og en helt masse tal og bogstaver.

- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 11:29 #3
har du implementeret det fra artiklen jeg linkede til?
mvh
Avatar billede kahs Nybegynder
24. august 2005 - 11:32 #4
Ja det har jeg og jeg får som sagdt kun ASP.NET_SessionId= og en helt masse tal og bogstaver frem.

Kan det være fordi jeg opretter min cookies forkert?

- KAHS
Avatar billede kahs Nybegynder
24. august 2005 - 11:41 #5
Jeg har også prøvet med:

Response.Cookies.Add(New System.Web.HttpCookie("cookie", str_value))
Response.Cookies.Add(New System.Web.HttpCookie("cookieId", str_id))

Uden held?
- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 11:44 #6
det her virker helt som beskrevet hos mig - to simple cookies, med en enkelt variabel i hver.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        HttpCookie cookie1 = new HttpCookie("somecookie");
        cookie1.Values.Add("somevar", "somevalue");
        Response.Cookies.Add(cookie1);
       
        HttpCookie cookie2 = new HttpCookie("someothercookie");
        cookie2.Values.Add("someothervar", "someothervalue");
        Response.Cookies.Add(cookie2);
    }
    else
    {
        body.Attributes.Add("onload", "show_all_cookies();");
    }
}

og på siden :

<head runat="server">
    <title>Untitled Page</title>
    <script language="javascript">
    function show_all_cookies(){
        var cookie = document.cookie;

        // split it into key-value pairs
        var cookie_pieces = cookie.split(';');

        // for each of those pairs, split into key and value
        for(var i=0; i<cookie_pieces.length; i++){

            // get the cookie piece and trim it
            var piece = trim(cookie_pieces[i]);

            // find the location of the '=' and split the string
            var a = piece.indexOf('=');
            if (a == -1){
                // there was no '=' - so we have a key and no value
                var key = piece;
                var value = '';
            }else{
                // we found an '=' - split the string in two
                var key = piece.substr(0,a);
                var value = piece.substr(a+1);
            }

            // now display our cookies
            alert('Key: ' + key + "  Value : "+ value);
        }
    }   
   
    function trim(str){
       
        // trim off leading spaces
        while (str.charAt(0) == ' '){
            str = str.substring(1);
        }
       
        //trim off trailing spaces
        while (str.charAt(str.length-1) == ' '){
            str = str.substring(0,str.length-1);
        }

        return str;
    }   
    </script>
</head>
<body id="body" runat="server">
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnButton" runat="server" />
    </div>
    </form>
</body>
</html>

mvh
Avatar billede kahs Nybegynder
24. august 2005 - 11:47 #7
Så må fejlen ligge i min aspx applikation.
Mit er skrevet i vb.net
Avatar billede snepnet Nybegynder
24. august 2005 - 11:56 #8
har du prøvet det jeg skrev :
someCookie.Values.Add("somevar", "somevalue");

og så bare kopieret javascriptet ind på din side?
mvh
Avatar billede kahs Nybegynder
24. august 2005 - 12:06 #9
Jeg har prøvet at ændre min kode til:

Dim cookie1 = New HttpCookie("somecookie")
cookie1.Values.Add("comecookie", "somevalue")
Response.Cookies.Add(cookie1)

og har indsat følgende på min side:

<script language="javascript">
function show_all_cookies(){
var cookie = document.cookie;

// split it into key-value pairs
var cookie_pieces = cookie.split(';');

// for each of those pairs, split into key and value
for(var i=0; i<cookie_pieces.length; i++){
  // get the cookie piece and trim it
  var piece = trim(cookie_pieces[i]);
 
  // find the location of the '=' and split the string
  var a = piece.indexOf('=');
  if (a == -1){
  // there was no '=' - so we have a key and no value
  var key = piece;
  var value = '';
  }else{
  // we found an '=' - split the string in two
  var key = piece.substr(0,a);
  var value = piece.substr(a+1);
  }
 
  // now display our cookies
  alert('Key: ' + key + "  Value : "+ value);
}
}   
   
function trim(str){
// trim off leading spaces
while (str.charAt(0) == ' '){
  str = str.substring(1);
}
       
//trim off trailing spaces
while (str.charAt(str.length-1) == ' '){
  str = str.substring(0,str.length-1);
}
return str;
}
//show_all_cookies();
</script>

- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 12:11 #10
så fiks resten også :
<body id="body" runat="server"> // så du kan skrive til den fra koden

og din page_load
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        HttpCookie cookie1 = new HttpCookie("somecookie");
        cookie1.Values.Add("somevar", "somevalue");
        Response.Cookies.Add(cookie1);
       
        HttpCookie cookie2 = new HttpCookie("someothercookie");
        cookie2.Values.Add("someothervar", "someothervalue");
        Response.Cookies.Add(cookie2);
    }
    else
    {
        body.Attributes.Add("onload", "show_all_cookies();");
    }
}

så kalder du metoden show_all_cookies() når siden loader - efter du har lavet dine cookies.

mvh
Avatar billede kahs Nybegynder
24. august 2005 - 12:14 #11
Metoden bliver kaldt efter at cookies er oprettet, da asp.net koden ligger i en aspx fil, som efter at have oprettet de to cookies, sender en videre til en html side med min javascriptkode!

- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 12:18 #12
fino - men hvad sker der når du gør det? - det skrev du ikke i 24/08-2005 12:06:20
mvh
Avatar billede kahs Nybegynder
24. august 2005 - 12:45 #13
Når jeg kalder show_all_cookies()?
Så får jeg som sagt kun en cookie frem som hedder: ASP.NET_SessionId= og en helt masse tal og bogstaver.

- KAHS
Avatar billede lifo Nybegynder
24. august 2005 - 12:50 #14
har du husket at sætte Expires til et eller andet ?
Avatar billede snepnet Nybegynder
24. august 2005 - 12:51 #15
jeg får en dialogboks frem, som skriver navnet på cookien, og indholdet af den variabel som følger (for somecookie):

Key:somecookie value: somevar=somevalue

hvis jeg har flere cookies får jeg bare flere dialogbokse.

prøv lige - for en test - at sæt cookieless på session som vist her:
http://p2p.wrox.com/topic.asp?TOPIC_ID=6320

mvh
Avatar billede kahs Nybegynder
24. august 2005 - 13:03 #16
Cookieless er sat til false som default.
Avatar billede snepnet Nybegynder
24. august 2005 - 13:06 #17
beklager formuleringen - sæt cookieles på session = sæt den til true.
mvh
Avatar billede kahs Nybegynder
24. august 2005 - 13:35 #18
Det er ingen forskel!
Jeg får stadig ASP.NET_SessionId= og en helt masse tal og bogstaver frem og ikke andet.

- KAHS
Avatar billede lifo Nybegynder
24. august 2005 - 13:47 #19
prøv at sætte cookie1.Expires = DateTime.Now.AddDays(1); // c# version
Avatar billede kahs Nybegynder
24. august 2005 - 14:04 #20
Heller ikke :(
Avatar billede kahs Nybegynder
24. august 2005 - 14:49 #21
Ikke andre forslag?
Kan det være noget sikkerhedsmæssigt, opsætning i EI?

- KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 15:10 #22
kommer dine tal og bogstaver frem i en dialogboks?
og kan du ikke paste det her?
mvh
Avatar billede kahs Nybegynder
24. august 2005 - 15:29 #23
Det kommer frem i en dialogboks og det er ligemeget med at paste, for hver gang jeg kører min applikation er det ny værdi.
Jeg tror nu ikke det er her problemet ligger, jeg tror dette er en cookie min applikation opretter til et eller andet formål.

Jeg tror mit problem er at mine cookies af en eller anden grund ikke bliver oprettet.

-KAHS
Avatar billede snepnet Nybegynder
24. august 2005 - 15:32 #24
har du checket dine cookie-settings i IE ?
Avatar billede kahs Nybegynder
24. august 2005 - 16:27 #25
Ja og det ser ikke ud til at der er noget der, som kunne forhindre min applikation i at oprette cookies.

-KAHS
Avatar billede kahs Nybegynder
25. august 2005 - 09:18 #26
Jeg har fundet ud af at de to cookies bliver oprettet på min maskine.
Det ligger nu en masse tekstfiler/Cookie, men jeg kan ikke kalde nogen af dem?

-KAHS
Avatar billede kahs Nybegynder
25. august 2005 - 12:46 #27
Jeg er slet ikke sikker på at det kan lade sig gøre, at hente alle cookies ind med Javascript - kun dem man har oprettet med document.cookie.

Er det andre der er uenige og har løst problemet, må de sige til.
Jeg lukker spørgsmålet.
Avatar billede snepnet Nybegynder
25. august 2005 - 14:22 #28
det eksempel jeg sendte dig 24/08-2005 11:44:38 fungerer helt upåklageligt her - også hvis du lægger scriptet på en html-side (jeg har prøvet begge dele).
- så jeg er uenig :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester