使用ajax在服务器端创建的Cookie无法作为http调用访问

时间:2014-01-23 22:10:47

标签: php jquery ajax cookies

我有一个网页index.php,我正在执行一个ajax

//index.php
<script src="jquery-2.0.3.js"></script>

<script type="text/javascript">
    $(document).ready(function(){
        $.get('ajax.php', function(data){
        console.log(data);
    });

    })

</script>

服务器端的Noe我在ajax.php中创建了很少的cookie

//ajax.php    
    <?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
setcookie("Phone", '111111', time() + 86400);
print_r($_COOKIE);
?>

现在我打开另一个页面test.php并尝试获取此cookie,但我正在获取cookie,我尝试打印cookie

//test.php
    <?php
print_r($_COOKIE);
?>

但那些饼干不打印..

1 个答案:

答案 0 :(得分:1)

通过PHP通过AJAX设置的Cookie不会在客户端中设置,因为它们是在页面加载时浏览器接收的HTTP标头中定义的。这就是您在发送输出后无法调用setcookie的原因。

使用javascript很容易设置Cookie:http://www.w3schools.com/js/js_cookies.asp

如果PHP脚本正在进行cookie中所需的计算,只需将它们作为JSON传回,然后通过javascript设置它们。

我不知道它有多好用,但这是一个用于管理cookie的jQuery插件:http://plugins.jquery.com/cookie/