30 messaggi dal 20 giugno 2001
Salve,

ho un piccolo problema con asp e un javascript, nell'elaborazione di stringhe che contengono apici o virgolette.
Ecco il mio codice

<SCRIPT>
function apri(Title,Text,Wwidth,Wwheight)
{

var aa = window.createPopup();
var bb = aa.document.body;
bb.style.backgroundColor = "white";
bb.style.border = "solid #000066 2px";

bb.innerHTML = "<table width=" + (Wwidth-4) + "><tr><td bgcolor=#000066 align=center><font face=verdana size=2 color=#ffffff>" + Title + "</td></tr><tr><td align=center><textarea rows=8 name=S1 cols=78 readonly>" + Text + "</textarea></td></tr><tr><td align=center><font face=verdana size=1 color=#000066><b> Un click per chiude...</td></tr></table>";

aa.show(310, 140, Wwidth, Wwheight, document.body);

}
</SCRIPT>

se utilizzo questo codice

<a href="#" onClick="apri('Titolo','Testo',665,195)">clicca qui</a>

tutto funziona perfettamente


se utilizzo questo codice (quello che mi interessa)

<a href="#" onClick="apri('<%=dbprova("Titolo")%>','<%=dbprova("Testo")%>',665,195)">clicca qui</a>

funziona soltanto se Titolo e Testo non contengono apici o virgolette, altrimenti ottengo solo "silenzio assoluto!!"

Premetto (se può servire) che l'inserimento del testo con apici o virgolette avviene utilizzando:

replace(Request("Titolo"), "'", "''")

Come posso ovviare al problema?

Grazie in anticipo, Massimo
3.122 messaggi dal 16 maggio 2002
Devi far precedere il carattere di escape di javascript \ ad ogni apice, quindi farai

<a href="#" onClick="apri('<%=Replace(dbprova("Titolo"), "'", "\'")%>','<%=Replace(dbprova("Testo"), "'", "\'")%>',665,195)">clicca qui</a>

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
30 messaggi dal 20 giugno 2001
Grazie per la tua celerità, ho appena provato il tuo suggerimento.

Il risultato è un errore di tipo:
Costante string senza terminazione.

Se i due campi del database contengono i valori:

l'acqua "pulita"
e
l'acqua "inquinata"

asp genererà questo codice:

<td height="20px" width=70><font face="verdana" size="1" color="#000099"><a href="#" onClick ="apri('l\'acqua "pulita"','l\'acqua "inquinata"',665,195)">Clicca qui</a></td>

provocando appunto l'errore di cui sopra
2.907 messaggi dal 15 maggio 2001
Contributi
Prova semplicemente con Server.HtmlEncode

<a href="#" onClick="apri('<%=Server.HtmlEncode(dbprova("Titolo"))%>','<%=Server.HtmlEncode(dbprova("Testo"))%>',665,195)">clicca qui</a>
30 messaggi dal 20 giugno 2001
E' stato necessario sommare entrambe i suggerimenti per arrivare allo scopo

<a href="#" onClick ="apri('<%=Replace(Server.HtmlEncode(dbprova("Titolo")),"'","\'")%>','<%=Replace(Server.HtmlEncode(dbprova("Testo")),"'","\'")%>',665,195>clicca qui</a>

Grazie mille
3.122 messaggi dal 16 maggio 2002
Per velocizzare l'operazione puoi riassumere il tutto in una funzioncina:

function formatJS(str)
formatJS = Replace(Server.HTMLEncode(str), "'", "\'")
end function

Poi basta che richiami la funzione

<a href="#" onClick ="apri('<%=formatJS(dbprova("Titolo))%>','<%=formatJS(dbprova("Testo"))%>',665,195>clicca qui</a>

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.