php setcookie ne fonctionne pas avec appel ajax

J'ai une page, test.php avec le code suivant:

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

J'ai une page, SetCookie.php avec le code suivant:

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

Quand test.php s'bouton est cliqué, j'utilise XMLHttpRequest pour appeler mon SetCookie.php page. La page s'exécute, parce que si j'ajoute un écho, je reçois que dans le xmlhttp réponse. Cependant, TestCookie ne semble pas être en train de se définir.

Si dans text.php, je fais la même commande qui se trouve dans SetCookie.php le cookie est alors défini en conséquence, pour toutes les sessions de navigateur.

Même après que j'ai fermer /ouvrir le navigateur, le cookie reste inchangé à partir de quand je suis dans mon test.php page manuellement.

----EDIT-----

J'ai ajouté:

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

pour le très haut de test.php cependant lorsque je recharge la page, il ne se montre jamais la mise à jour de cookie... parce que cookie a été déjà mis sans le"/" paramètre, et ne peuvent être modifiées plus tard, avec la ,"/" paramètre.

Après le vidage du cache et de travail de la proposition de code, j'ai effacé mes cookies du navigateur et utilisé le paramètre ajouté pour l'ensemble de la méthode, j'ai été capable de manipuler les cookies à partir de toutes les pages!!! merci beaucoup!!

Il y a quelques jours, j'ai eu le code qui l'a fait. La seule différence que je pense, c'est que l'SetCookies.php la page existe dans le même répertoire que le "??.php de la page". peut-être que cela a quelque chose à faire avec elle? je vais travailler avec mon code sur cette idée un peu et après une mise à jour si je trouve quoi que ce soit.
Désolé, j'ai été stupide 😉 s'avère la seule chose que vous ne pouvez pas donc est de définir des cookies POUR la demande.
c'est toujours bon à savoir, je n'avais aucune idée qu'il n'y a aucune restriction. =P

OriginalL'auteur adam | 2011-04-12