好。首先是相关的代码:
jQuery的:
saveFilterCookie: function( obj ) {
$.ajax( {
url : saveFilterCookie,
type : 'POST',
data : { filter: obj },
dataType: 'json',
success : function( data, status, jqxhr)
{
var headers = jqxhr.getAllResponseHeaders()
console.log(headers);
},
error : function( jqXHR , textStatus , errorThrown )
{
console.log(textStatus);
}
});
},
PHP:
public function saveFilterAction( ) {
$filter = $this->request->get( 'filter', null );
// Expiration days
$expirationDays = $this->serviceContainer->getParameter( 'filter_cookie_expiration_days' );
// Cookie expiration time
$expirationTime = time() + ( 3600 * 24 * $expirationDays );
// Set filter cookie
$this->response->headers->setCookie( new Cookie( '_filter', $filter, $expirationTime ) );
return $this->renderJSON( json_encode( array( 'success' => true ) ) );
}
我从AJAX调用得到了适当的响应。状态200,一切看起来都不错。该Cookie甚至位于响应标头中(根据Google Chrome的检查员)。但是当我导航到下一页时,cookie就神奇地消失了。
检查员的回应:
有什么想法?我猜我错过了一些明显的东西。
编辑:解决方案
对于那些感兴趣的人,通过简单地创建cookie客户端来解决这个问题,因为不需要去服务器和返回。有关详细信息,请参阅W3 Schools article on JS Cookies。