Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Cookies Laravel 4:Cookie未设置?_Cookies_Laravel_Laravel 4 - Fatal编程技术网

Cookies Laravel 4:Cookie未设置?

Cookies Laravel 4:Cookie未设置?,cookies,laravel,laravel-4,Cookies,Laravel,Laravel 4,我正在尝试在laravel中设置一个cookie,如: $cookie = Cookie::forever('knownWords', serialize($words)); return Response::json(array('status' => "FAIL", "msg" => "Info stored in cookie!"))->headers->setCookie($cook

我正在尝试在laravel中设置一个cookie,如:

    $cookie = Cookie::forever('knownWords', serialize($words));
                return Response::json(array('status' => "FAIL", 
                    "msg" => "Info stored in cookie!"))->headers->setCookie($cookie);
然后在以后的不同路径中访问它,并将其作为json响应发送,如下所示:

   $words = array();
        if(Cookie::has('knownWords')){
            $words = unserialize(Cookie::get('knownWords'))
        }
        return Response::json(array('status' => "FAIL", 
            "msg" => "Not logged in! Cookie info attached.",
            "data" => $words));        
我没有收到任何错误,但我可以确认它没有进入Cookie::has if语句。有什么想法吗,伙计们?我对饼干很陌生!如果你需要知道的话,我正在使用localhost和chrome

编辑:我通过AJAX调用这些路由

尝试使用withCookie。我的意思是,改变这个:

return Response::json(array(
    "status" => "FAIL", 
    "msg" => "Info stored in cookie!"
))->headers->setCookie($cookie);
为此:

return Response::json(array(
    "status" => "FAIL", 
    "msg" => "Info stored in cookie!"
))->withCookie($cookie);
这就是我迄今为止所做的工作:

<?php // routes.php

Route::get('/', function() {
    return View::make('index');
});

Route::get('set', function()
{
    $words = ['foo', 'bar'];
    $cookie = Cookie::forever('knownWords', serialize($words));
    return Response::json(array('status' => "FAIL", "msg" => "Info stored in cookie!"))->withCookie($cookie);
});

Route::get('see', function()
{
    $words = array();

    if(Cookie::has('knownWords')){
        $words = unserialize(Cookie::get('knownWords'));
    }

    return Response::json(array('status' => "FAIL", 
        "msg" => "Not logged in! Cookie info attached.",
        "data" => $words));  
});
然后,使用AJAX调用查看简单html:

<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script>
        $(function() {
            $.ajax({
                url: '{{ URL::to("set") }}',
                success: function(response) {
                    console.log(response);
                }
            });
        });
    </script>
</body>
</html>

显然我只需要用composer来更新Laravel。现在它工作了D

已经尝试过了,显然Response::json不像其他响应内容那样工作。->headers->setCookie是我在寻找解决方案时发现的,但这似乎也不起作用。withCookie抱怨它是一个未定义的方法。嗯,它对我有用。我刚刚复制粘贴了您的代码并添加了$words=['foo','bar'];在它之前。你是通过ajax调用它吗?不是,但你在问题中没有具体说明;我现在就去说明一下P你能试试看,告诉我是否有效吗?