Newsgroup: it.comp.lang.javascript
Titolo: problemi con i cookie in ASP e JavaScript

Salve...
Sto scrivendo una pagina ASP usando JavaScript come linguaggio di script ed
ho un problema nell'impostare il campo "expires" di un cookie. Il codice è
il seguente:
//
var expires = new Date();
expires.setFullYear(expires.getFullYear() + 1);
Response.Cookies("Prova") = "Prova";
Response.Cookies("Prova").Expires = expires.toString();
//
Ho provato anche così:
//
1. Response.Cookies("Prova").Expires = expires.getTime();
2. Response.Cookies("Prova").Expires = "Jan 1, 2005";
3. Response.Cookies("Prova").Expires = #Jan 1, 2005#;
Nessuno dei metodi ha funzionato. L'errore è sempre un "type-mismatch".
Qualcuno sa perché?
Vi ringrazio per le eventuali risposte... Luca
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:194Z185Z97Z57Y...@usenet.libero.it...


 Response.Cookies("Prova").Expires = expires.toString();
Se non ricordo male  il cookie va inserito in formato mm/gg/yyyy (prova
manualmente mettendoci expires="12/31/2004" a vedere se funziona)


Innanzitutto, grazie per le risposte ragazzi... :-)
Ho tentato il metodo suggerito da "Cobra", cioè:
//
Response.Cookies("Prova").Expires = Date + 7
ma non ha funzionato. Devo essere sincero... è la prima volta che vedo usare
l'oggetto "Date" di JavaScript in questo modo. Ho la sensazione che questo
codice sia VBScript... ma potrei benissimo
sbagliarmi.
Ho poi provato il suggerimento di Cristiano Larghi. Questo è andato a buon
fine (evviva!) ma... c'è un piccolo problema che ora vado a spiegare.
Sul server IIS che ho installato nel mio pc (è una versione in italiano),
succede che:
1. Se scrivo: Response.Cookies("Prova").Expires = "12/13/2004" ---> ottengo:
"13 Dicembre 2004"
2. Se scrivo: Response.Cookies("Prova").Expires = "12/11/2004" ---> ottengo:
"12 Novembre 2004"
N.B.: leggo le date dei cookie con il "cookie-manager" di Netscape 7.1.
Cioè sembra che nel secondo caso, in presenza di una data ambigua il server
scelga il formato "Italiano", cioè "dd/mm/yyyy". Non vorrei che un server in
lingua inglese (americana) scelga in presenza di una data ambigua il formato
"Americano", cioè "mm/dd/yyyy". Questo sarebbe un elemento di aleatorietà
notevole.
Non so se sono riuscito ad esternare chiaramente i miei dubbi... hehehe
Comunque, grazie ancora per i suggerimenti...
Saluti, Luca


 "12 Novembre 2004"
Hai provato con (riprendendo il tuo codice):
var expires=new Date();
expires.setFullYear(expires.getFullYear()+1);
Response.Cookies("Prova").Expires=expires.toGMTString();
?
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)


Si, ho prvato anche questa istruzione... ma non mi funziona. Sembra che
l'unico formato della data accettato sia quello "dd/mm/yyyy" (oppure
"mm/dd/yyyy"). Per me va bene cosě, anche se tutto ciň mi sembra strano.
Infatti, tutti gli esempi che ho trovato su internet (scritti perň in
VBScript) usano il formato esteso delle date (del tipo "Jan 1, 2005").
Comunque grazie di tutto... Ciao ciao


 Si, ho prvato anche questa istruzione... ma non mi funziona.
Ho capito la magagna. Tutti partavamo dall'assunto che ASP gestisse i
cookie bene o male come qualsiasi altro cristo su questa terra; Ma non e'
cosi' e rileggendo i post di questo Thread e' abbastanza chiaro.. mea
culpa.
Expires e' una proprieta' che necessita' di un oggetto Date; *non* di una
stringa che "rappresenta" una data.
Quindi prova con:
var expires=new Date();
expires.setFullYear(expires.getFullYear()+1);
Response.Cookies("Prova").Expires=expires;
O, se non dovesse funzionare, forza il tipo per gli oggetti COM:
Response.Cookies("Prova").Expires=expires.getVarDate();


 ha scritto nel messaggio
news:194Z185Z97Z57Y1...@usenet.libero.it...


 all0internoi di una stringa... etc).
Ehi, qua dentro questo suona come una bestemmia!
Scherzi a parte, anche sulla gestione delle stringhe javascript / 
jscript supera vbscript di parecchie lunghezze.
Per il trim:
function __String_trim(){return this.replace(/^\s+|\s+$/g,"")}
String.prototype.trim=__String_trim;
In modo da averlo come metodo dell'oggetto String.
Es: tuaStringa.trim()
Per dimostrarti la validita' di quanto affermo sulla sostituzione di 
porzioni di stringa in generale, prova a fare un semplice esercizio in 
vbscript.
Prendi un testo qualsiasi (se corposo si confrontano facilmente anche le 
velocita' di esecuzione) e scegli una parola che viene ripetuta 
all'interno del testo con maiuscole e minuscole diverse (es: CIAO, ciao, 
Ciao).
Ora fai una funzione in vbscript che ti restituisca il testo ma con la 
parola succitata formattata con un tag html, come ad esempio il grassetto.
Quindi, per l'esempio precedente: CIAO diventa "<b>CIAO</b>", ciao 
diventa "<b>ciao</b>", ecc.
Quando hai finito confronta il codice che hai dovuto scrivere in 
vbscript con questo che ti riporto sotto e, mi ripeto, confronta le 
velocita' di esecuzione passandogli un testo bello corposo (cosi' vedi a 
occhio senza tirare in ballo millisecondi).
tuoTesto.replace(/ciao/gi,function(){return "<b>"+arguments[0]+"</b>"})
E benvenuto nel magnifico mondo delle regular expression!

 E benvenuto nel magnifico mondo delle regular expression!
Anche a me

 non mancano le () intorno a "ciao"? :-)
Non in questo caso.
Comunque mi sono appena cazziato, per l'inutilita' della function come 
parametro.

 Anche a me
LOL :)


 dare un esempio di quel che si puo` fare.
Credo sia stato solo un momento di puro "invornimento"...