Normaly我在控制器的动作中设置会话没有任何问题。我做了以下事情:
public function testAction()
{
$container = new Container('example');
$container->test = 'example';
...
}
它有效。但是,如果它的AJAX调用它不起作用......
public function ajaxAction()
{
...
if ($this->getRequest()->isXmlHttpRequest()) {
// code that works fine
// session code that doesn't work at all...
$container = new Container('example');
var_dump($container->test); // <-- in second request it should dump 'example' string, but it returns null every time
$container->test = 'example';
}
return new JsonModel(array('success' => $result));
}
我用以下方法尝试了上面的代码:
$container->getManager()->start()
$container->getManager()->isValid()
$container->getManager()->getStorage()->isLocked()
$container->getManager()->rememberMe(30*60*60*24);
$container->setExpirationSeconds(30*60*60*24);
$container->getManager()->getConfig()->setCookieSecure(false);
$container->getManager()->getConfig()->setCookieHttpOnly(false);
$container->getManager()->writeClose();
但它不起作用。 AJAX请求是通过标准的jQuery方法运行的,所以我不认为值得发布它。我非常确定AJAX调用工作正常,因为除了这个问题我没有任何问题。
我知道如何才能在AJAX中设置会话变量? Zend更改/阻止它与普通HTTP请求一起工作,但不适用于AJAX。