Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php javascript意外令牌COOKIE_Php_Javascript_Jquery - Fatal编程技术网

Php javascript意外令牌COOKIE

Php javascript意外令牌COOKIE,php,javascript,jquery,Php,Javascript,Jquery,所以我有这个问题,我使用index.inc.php文件来设置cookie,这是必须的 使用服务器端语言设置cookie的问题在于,它不会在第一次加载时生效。javascript位于模板文件index.tpl(使用XTemplate)上,COOKIE2和COOKIE3是PHP上定义的值,它们是cookie值,但在第一次加载时,总是空的 var ligarei = getCookie('ligarei'); if(ligarei != "nao"){ var cookie2 = {COOKI

所以我有这个问题,我使用index.inc.php文件来设置cookie,这是必须的

使用服务器端语言设置cookie的问题在于,它不会在第一次加载时生效。javascript位于模板文件index.tpl(使用XTemplate)上,COOKIE2和COOKIE3是PHP上定义的值,它们是cookie值,但在第一次加载时,总是空的

var ligarei = getCookie('ligarei');
if(ligarei != "nao"){
    var cookie2 = {COOKIE2};
    var cookie3 = {COOKIE3};
    var timeout = cookie3 - cookie2;
    var timeout2 = 60 - timeout;

    $(document).ready(function() {
        if(timeout > 60){
            popthat();
        }
        else if(timeout < 60){
            setTimeout("popthat()", timeout2 * 1000);
        }

    });
}
这给了我一个意外的令牌错误

有没有关于如何解决这个问题的提示


非常感谢。

假设您的问题是因为您实际上无法更改php代码以符合简单的空检查

var ligarei = getCookie('ligarei');
if(ligarei != "nao"){
    var cookie2 = {COOKIE2} + 0; // or + "" if it is a string
    var cookie3 = {COOKIE3} + 0;
    var timeout = cookie3 - cookie2;
    var timeout2 = 60 - timeout;

    $(document).ready(function() {
        if(timeout > 60){
            popthat();
        }
        else if(timeout < 60){
            setTimeout("popthat()", timeout2 * 1000);
        }

    });
}
var ligarei=getCookie('ligarei');
如果(ligarei!=“nao”){
var cookie2={cookie2}+0;//或+“”如果是字符串
var cookie3={cookie3}+0;
var timeout=cookie3-cookie2;
var timeout2=60-超时;
$(文档).ready(函数(){
如果(超时>60){
popthat();
}
否则如果(超时<60){
setTimeout(“popthat()”,timeout2*1000);
}
});
}

使用客户端JS代码读取cookie

在$(document).ready函数中,可以从
docmuent.cookies
对象读取cookies。这里有一个重新分级的示例:

此外,还有一些第三方js库可以简化此任务,例如cookie jar:


如果采用这种方式,则无需在代码中加入cookie未设置的情况(实际上已设置,但在服务器端代码运行时未设置)。

cookie始终是字符串。我认为您只是缺少引号:

var cookie2 = "{COOKIE2}";
var cookie3 = "{COOKIE3}";
无论如何,您正在使用一种语言(PHP)为另一种语言(JavaScript)生成源代码,因此您只需非常小心地遵守目标语言的语法规则。在PHP中,通常的技巧是使用输出值。例如:

<?php
$value = 'Foo "bar"; test';
echo json_encode($value);
最后但并非最不重要的一点是,您是否使用服务器端语言来设置cookie并不重要,如以下代码段所示:

<?php

setcookie('current-time', date('H:i:s'));

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
window.onload = function(){
    alert("Cookies: " + decodeURIComponent(document.cookie));
};
</script>
</head>
<body>
</body>
</html>

window.onload=函数(){
警报(“Cookies:+decodeURIComponent(document.cookie));
};

实际上,我可以在javascript文档上读写cookie,但我确实需要使用php cookie集,正如您所见,我定义了getCookie函数,但这些cookie2和cookie3确实需要使用php文件来定义。无论如何,谢谢。使用服务器端语言设置cookie不会在第一次加载时生效?m是什么你这么认为吗?
"Foo \"bar\"; test"
<?php

setcookie('current-time', date('H:i:s'));

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
window.onload = function(){
    alert("Cookies: " + decodeURIComponent(document.cookie));
};
</script>
</head>
<body>
</body>
</html>