php setcookie无法使用ajax调用
我有一个页面test.php,其中包含以下代码:php setcookie无法使用ajax调用,php,javascript,ajax,cookies,xmlhttprequest,Php,Javascript,Ajax,Cookies,Xmlhttprequest,我有一个页面test.php,其中包含以下代码: <html> <body> <form> <script type="text/javascript"> function SendCookies(){ if (window.XMLHttpRequest)/* code for IE7+, Firefox, Chrome,
<html>
<body>
<form>
<script type="text/javascript">
function SendCookies(){
if (window.XMLHttpRequest)/* code for IE7+, Firefox, Chrome, Opera, Safari */
{ xmlhttp=new XMLHttpRequest(); }
else /* code for IE6, IE5 */
{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status == 200)
{
alert('done');
}
}
xmlhttp.open("GET", "/web/DEV/Classes/SetCookie.php?time=" + new Date());
xmlhttp.send();
}
</script>
<input type="text" id="txtInput" name="txtInput"/>
<input type="button" id="btnSubmit" name="btnSubmit" value="Submit" onclick="SendCookies()"/>
<div id="divTest">
<?php
if (isset($_COOKIE["TestCookie"])) {
echo $_COOKIE["TestCookie"];
} else {
echo "__Results__";
}
?>
</div>
</form>
</body>
</html>
<?php
$var = "THIS IS A TEST";
setcookie("TestCookie", $var, time()+60*60*24*30);
?>
但是,当我重新加载页面时,它不会显示更新的cookie因为该cookie已设置为不带“/”参数,并且以后无法使用“/”参数进行修改。
在清除缓存并使用建议的代码之后,我从浏览器中清除了我的cookies,并使用set方法中添加的参数,我能够操作所有页面中的cookies!!!非常感谢你 我认为您应该查看setcookie的path参数。将其设置为“/”,以便可以从站点的所有目录/页面访问它。如果未将
$path
值添加到setcookie()
,则默认为“当前目录”。这意味着,如果您从/web/DEV/Classes/SetCookie.php
设置cookie,cookie将被设置为/web/DEV/Classes/
,并且高于该路径的任何内容都不会看到该cookie
要解决此问题,请向setcookie添加特定的$path。如果您的应用程序在域根目录(example.com)上运行,请使用'/'
。如果它位于子文件夹(example.com/myapp/)中,请使用'/myapp/“
setcookie("TestCookie", $var, time()+60*60*24*30, '/');
就在几天前,我有代码可以做到这一点。我能想到的唯一区别是SetCookies.php页面与“?.php”页面存在于同一目录中。也许这与此有关?我会用我的代码来处理这个想法,如果我发现了什么,我会发布一个更新。对不起,我太傻了;-)事实证明,你唯一做不到的就是为请求设置cookies。这仍然很好,我根本不知道有任何限制=请注意,这不会更改已存在的cookie。如果没有指定路径,则必须首先清除旧cookie。
setcookie("TestCookie", $var, time()+60*60*24*30, '/');