Como posso compartilhar cookies entre ColdFusion e JavaScript?
Compartilhar cookies entre ColdFusion e JavaScript é uma forma fácil de passar dados entre as duas tecnologias. Um cookie é um cookie independentemente de se foi definido pelo ColdFusion, Java, .net, ou JavaScript. Desde que voce saiba o nome do cookie (e em alguma situações sua caixa - maiúsculo/minúsculo) voce pode acessar e manipular o cookie. Dito isto, o maior truque em compartilhar cookies entre ColdFusion e JavaScript é lembrar-se que ColdFusion ignora a caixa (case insensitive), mas JavaScript não (case sensitive). Usar um cookie JavaScript em ColdFusion não importa a caixa, mas usar um cookie ColdFusion em JavaScript voce deve se referenciar ao nomde do cookie todo em letras maiúsculas (all caps).
O código a seguir está dividido em duas páginas. A primeira página define dois cookies. O primeiro cookie é definido via JavaScript, e o segundo via ColdFusion. A segunda página então usa ColdFusion e JavaScript para exibir o conteúdo dos cookies que foram definidos pela outra linguagem:
<!--- Page1.cfm --->
<script language=javaScript>
<!--
//This function will set a JavaScript cookie
function setCookie(name, value) {
//build an expiration time 1 hour into the future
var expDate = new Date();
expDate.setTime(ExpDate.getTime() + 60*60*1000);
//set the cookie
document.cookie = name + "=" + escape(value) +
";" + expDate.toGMTString();
}
setCookie('jSCookie', 'JavaScript!');
// -->
</script>
<cfcookie name="cFCookie" value="ColdFusion!" expires="never">
<!--- Page2.cfm --->
<script language=javaScript>
<!--
// This function will return the value of a JavaScript cookie
function getCookie(name) {
//init output var output = null;
//apend ; to end so we can calculate end of cookie text
var myCookie = " " + document.cookie + ";";
//append = to cookie name so any additional text is the cookie value
var search = " " + name + "=";
// init search start location
var begin = myCookie.indexOf(search);
//init search end location
var end;
//loop over cookie text and pull out the value we want
if (begin != -1) {
begin += search.length;
end = myCookie.indexOf(";", begin);
output = unescape(myCookie.substring(begin, end));
}
return output;
}
alert(getCookie('CFCOOKIE'));
// -->
</script>
<cfoutput>#cookie.jSCookie#</cfoutput>
Jacivam ~ Jan 20, 2010 at 10:10 AM