我已经使用 PHP 设置了一个 cookie,
setcookie("redirect", $this->currentPage(), time() + 31536000);
但是我想在单击某个链接时使用 javascript 检索此 cookie 的值。我怎样才能做到这一点?
我已经使用 PHP 设置了一个 cookie,
setcookie("redirect", $this->currentPage(), time() + 31536000);
但是我想在单击某个链接时使用 javascript 检索此 cookie 的值。我怎样才能做到这一点?
是的,有可能。
试试这个来读取cookie:
function getCookie(c_name) {
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++) {
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name){
return unescape(y);
}
}
}
// get cookie foo
var foo = getCookie('foo');
试试这个来设置一个cookie:
/**
* Sets a cookie
*/
function setCookie(c_name,value,exdays) {
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
// set a cookie 'foo=bar' for 3 days
setCookie('foo', 'bar', 3);
Cookie 不是特定于 PHP 的,它们是特定于浏览器的,可以通过 PHP 和 Javascript 放置。对于一个简单的解决方案,您可以查看jQuery 的 Cookie 插件
这是另一种尝试更容易理解的方法。
此外,由于 cookie 是经过编码的(键和值),因此您需要对它们都进行解码。
var getCookie = function(name) {
var thisCookie,
keyValuePair,
key,
value,
cookies = document.cookie.split('; ') ;
for ( var i=0 ; i<cookies.length ; i++ ) {
thisCookie = cookies[i] ;
keyValuePair = thisCookie.split('=') ;
key = decodeURIComponent(keyValuePair[0]) ;
if ( key === name ) {
value = keyValuePair[1] ;
return (value != null) ? decodeURIComponent(value) : null;
}
}
}
关于在单击链接时获取 cookie 的部分,您将在事件处理程序中调用此函数。
假设您知道如何在 JavaScript 中获取相关链接。这是获取文档中第一个链接的一种方法:
var link = document.querySelector('A') ;
无论如何,一旦你有了你的链接,点击链接时如何获取值:
var getCookieOnLinkClick = function() {
var cookieValue = getCookie('cookieName') ;
console.log('Cookie value is ', cookieValue) ;
}
link.addEventListener('click', getCookieOnLinkClick) ;
(当然,大多数链接都会加载一个新页面,因此一旦获得 cookie 值,您将没有太多时间对它进行任何操作。)
错误的概念。Cookie 存储在浏览器中。PHP 通过 HTTP 请求和响应获取/设置浏览器 cookie。所以 PHP 和浏览器 JS 都可以操作相同的 cookie。