当前位置: 首页 > 面试题库 >

php setcookie无法与ajax调用一起使用

梁丘高朗
2023-03-14
问题内容

我有一个页面test.php,其中包含以下代码:

<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>

我有一个页面,SetCookie.php,其中包含以下代码:

<?php 
    $var = "THIS IS  A  TEST";
    setcookie("TestCookie", $var, time()+60*60*24*30);
?>

当单击test.php的按钮时,我使用XMLHttpRequest来调用我的SetCookie.php页面。该页面将执行,因为如果我向其添加回显,则会在xmlhttp响应中得到它。但是,TestCookie似乎没有设置。

如果在text.php中,我执行与SetCookie.php中相同的命令,则将为所有浏览器会话相应地设置cookie。

即使在我关闭/打开浏览器之后,从我在test.php页面中手动设置它以来,cookie仍然保持不变。

- - 编辑 - - -

我补充说:

if(!setcookie("TestCookie", "A", time()+60*60*24*30, "/")) {
    echo "FAIL";
}

到test.php的最上端,但是,当我重新加载页面时,它永远不会显示更新的cookie … 因为该cookie已设置为不带“”
/“参数,并且以后无法使用”“ /进行修改”参数。

清除缓存并使用建议的代码后,我从浏览器中清除了cookie,并使用set方法的添加参数,从而能够操作所有页面中的cookie !!!非常感谢!!


问题答案:

如果您没有在中添加$pathsetcookie(),则默认为“当前目录”。这意味着,如果您将cookie从/web/DEV/Classes/SetCookie.php设置为/web/DEV/Classes/,则cookie设置为,并且该路径上方的任何内容都不会看到该cookie。

要解决此问题,请将特定的$
path添加到setcookie。如果您的应用程序在域根目录(example.com)上运行,请使用'/'。如果位于子文件夹(example.com/myapp/)中,请使用'/myapp/'

setcookie("TestCookie", $var, time()+60*60*24*30, '/');


 类似资料:
  • 问题内容: 我使用以下代码将数据发送到MailChimp新闻列表(API v3)。每次我从函数中删除时,它都会尝试通过GET发布数据,并正确发送数据(在MailChimp API仪表板中可以确定响应)。在浏览器(FF)中进行测试时,我得到一个响应为“ true”的.part文件。 我将我的头发拔了出来,任何见识都将受到赞赏。 提前致谢, JN 问题答案: 主要问题是jc在您的原始帖子中评论了什么-

  • 问题内容: 我正在尝试整合同位素,但Iam在使其与Ajax一起使用时遇到问题。 这是代码: HTML只是“” 在同位素线被注释掉的情况下,我实际上按预期显示了div,但是由于我无法弄清楚如何在同位素线中工作,因此无法正常工作。 我正在尝试将同位素与“插入”方法集成在一起,而我无需使用ajax即可工作。 摘录自:http : //isotope.metafizzy.co/docs/adding- i

  • 问题内容: 我的程序应该等待按下向左或向右箭头键,然后更改一个值,以便下次更新PaintComponent时,屏幕看起来有所不同。但是,运行该程序时,屏幕没有变化。 以下是变量声明: 这是主要的KeyListener声明: 这是用于绘画的方法: 当我运行该程序时,该程序会打印外壳,但是当我按箭头键时,屏幕上没有任何变化。 问题答案: 您需要先将关键侦听器添加到组件,然后才能调用它: 您还需要使组件

  • 问题内容: click事件可以正常运行,但是onmouseover事件不起作用。 问题答案: 您需要大写一些字母。

  • 问题内容: iOS 8推出后,我们的网站突然停止工作。从ASP.NET UpdatePanel内部进行的每个回发都将导致一个空白页。如果从Safari 8(在Mac上)将用户代理设置为“ Chrome”,它仍然可以工作。 我已经跟踪到,某些“ ScriptResource.axd”和“ WebResource.axd”文件根本没有加载。还会出现一个错误消息,提示“ Sys.WebForms”未定义

  • 问题内容: 我正在尝试通过HTML执行以下操作: 基本上用户按下登录按钮,就会调用onLogin方法,该方法会将帖子发送到我的API。帖子工作正常,我确实在.then()承诺中得到了答复。 但是,尝试执行类似的操作并不会以我期望用户登录时HTML会执行的操作来更新DOM。 当我在promise中收到响应并且找不到“ vm”实例时,可能是我处于某种后台线程(对不起,这里是移动开发人员)? 谢谢 问题