Cookies Laravel 4:Cookie未设置?
我正在尝试在laravel中设置一个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
$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你能试试看,告诉我是否有效吗?