cookie php 在 js 中
Cookie php in js
如果通过 php 创建 cookie,则无法在 js 中使用它们。
创建 cookie:
function opo_setcookie( $name, $value, $expire = 0, $secure = false ) {
if ( ! headers_sent() ) {
setcookie( $name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure );
} elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
headers_sent( $file, $line );
trigger_error( "{$name} cookie cannot be set - headers already sent by {$file} on line {$line}", E_USER_NOTICE );
}
}
...
$cart = array("key"=>$key, "user"=> $user, "products"=> array(), "total"=> 0, "price"=>0, "lang"=>ICL_LANGUAGE_CODE);
opo_setcookie('opo_cart', addslashes( json_encode($cart) ), time()+2592000);
尝试获取 cookie:
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
var json_str = getCookie('opo_cart');
但出现错误:未捕获语法错误:JSON 中位置 0 的意外标记 %。
因为 cookie 的内容是“%7B%5C%22lang%5C%22%3A%5C%22en%5C%22%7D...”
我该如何解决这个问题?
您需要使用 decodeURI 函数:
var json_str = decodeURI(getCookie('opo_cart'));
如果通过 php 创建 cookie,则无法在 js 中使用它们。 创建 cookie:
function opo_setcookie( $name, $value, $expire = 0, $secure = false ) {
if ( ! headers_sent() ) {
setcookie( $name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure );
} elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
headers_sent( $file, $line );
trigger_error( "{$name} cookie cannot be set - headers already sent by {$file} on line {$line}", E_USER_NOTICE );
}
}
...
$cart = array("key"=>$key, "user"=> $user, "products"=> array(), "total"=> 0, "price"=>0, "lang"=>ICL_LANGUAGE_CODE);
opo_setcookie('opo_cart', addslashes( json_encode($cart) ), time()+2592000);
尝试获取 cookie:
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
var json_str = getCookie('opo_cart');
但出现错误:未捕获语法错误:JSON 中位置 0 的意外标记 %。 因为 cookie 的内容是“%7B%5C%22lang%5C%22%3A%5C%22en%5C%22%7D...” 我该如何解决这个问题?
您需要使用 decodeURI 函数:
var json_str = decodeURI(getCookie('opo_cart'));