CakePHP会话不工作
我试图用cakePHP在会话中保存数据。我已经在线阅读了文档和许多示例,但我似乎无法在会话中保存数据 在我的控制器中,我添加了会话写入功能:CakePHP会话不工作,php,ajax,session,cakephp,Php,Ajax,Session,Cakephp,我试图用cakePHP在会话中保存数据。我已经在线阅读了文档和许多示例,但我似乎无法在会话中保存数据 在我的控制器中,我添加了会话写入功能: public function take(){ if(array_key_exists('option', $this->request->data)){ foreach($this->request->data['option'] as $cmd => $options){ f
public function take(){
if(array_key_exists('option', $this->request->data)){
foreach($this->request->data['option'] as $cmd => $options){
foreach($options as $cmd => $option){
$buildCmnd = '-1 RENDERER*'.$this->request->data['Playlist']['layer'].'*TREE*$master*SCRIPT*INSTANCE*externalCommand SET '.$this->request->data['Playlist']['el'].' '.$cmd.' text={'.$option.'}';
$this->send($buildCmnd);
}
}
}
$this->Session->write('TakenCommand', array( $this->request->data['Playlist']['el'] ) );
$this->autoRender = false;
}
<pre>
<?php print_r($this->Session->read());?>
</pre>
我通过jquery ajax调用该操作:
$("#inputTake").click(
function()
{
jQuery.ajax({
type:'POST',
async: true,
cache: false,
url: '/Controller/take',
success: function(response) {
jQuery('#resultField').val(response);
},
data:jQuery('form').serialize()
});
return false;
}
);
因为我使用的是ajax,所以我创建了一个元素,我调用它来检查会话。这是元素的内容:
我已经将core.php文件会话默认值从“php”改为“cake”再改回来,但这两个选项似乎都没有帮助
如有任何建议,将不胜感激
我看到的一些答案建议在core.php中设置'checkAgent'=>false,但这也没有帮助。
在CakePHP 1.x中,可以将安全级别设置为medium来解决问题,但在2.x中,此选项不可用。在使用Session+AJAX时,我遇到了相同的问题。如果使用DebugKit.Toolbar,您会注意到即使在AJAX响应之后,会话变量也不会显示在工具栏上。我以为这只是一个显示问题,但可能是其他问题。而且,在我的AJAX方法中,我根本无法读取会话。出于您的目的,该限制可能还可以,因为您似乎正在覆盖会话变量,而不是添加到它上
我最终只是使用了回发而不是AJAX调用,而在AJAX调用中不起作用的代码逻辑在回发中工作得非常好 我在使用Session+AJAX时遇到了同样的问题。如果使用DebugKit.Toolbar,您会注意到即使在AJAX响应之后,会话变量也不会显示在工具栏上。我以为这只是一个显示问题,但可能是其他问题。而且,在我的AJAX方法中,我根本无法读取会话。出于您的目的,该限制可能还可以,因为您似乎正在覆盖会话变量,而不是添加到它上
我最终只是使用了回发而不是AJAX调用,而在AJAX调用中不起作用的代码逻辑在回发中工作得非常好 我在使用Session+AJAX时遇到了同样的问题。如果使用DebugKit.Toolbar,您会注意到即使在AJAX响应之后,会话变量也不会显示在工具栏上。我以为这只是一个显示问题,但可能是其他问题。而且,在我的AJAX方法中,我根本无法读取会话。出于您的目的,该限制可能还可以,因为您似乎正在覆盖会话变量,而不是添加到它上
我最终只是使用了回发而不是AJAX调用,而在AJAX调用中不起作用的代码逻辑在回发中工作得非常好 我在使用Session+AJAX时遇到了同样的问题。如果使用DebugKit.Toolbar,您会注意到即使在AJAX响应之后,会话变量也不会显示在工具栏上。我以为这只是一个显示问题,但可能是其他问题。而且,在我的AJAX方法中,我根本无法读取会话。出于您的目的,该限制可能还可以,因为您似乎正在覆盖会话变量,而不是添加到它上
我最终只是使用了回发而不是AJAX调用,而在AJAX调用中不起作用的代码逻辑在回发中工作得非常好 你提到过你有这个想法
<?php print_r($this->Session->read('TakenCommand')); ?>
试试这个
另外,请确保您正在添加“SessionHelper”。您提到的视图中有此选项
<?php print_r($this->Session->read('TakenCommand')); ?>
试试这个
另外,请确保您正在添加“SessionHelper”。您提到的视图中有此选项
<?php print_r($this->Session->read('TakenCommand')); ?>
试试这个
另外,请确保您正在添加“SessionHelper”。您提到的视图中有此选项
<?php print_r($this->Session->read('TakenCommand')); ?>
试试这个
此外,请确保您正在添加“SessionHelper”。如果控制器中的php open标记前有空格或php close标记后有空格,则会导致会话无法工作。检查您的控制器(和其他组件,如果有)是否在关闭
“?>”
后有多余的空间/新行,或打开标记前有空格“如果控制器中的php打开标记前有空格或php关闭标记后有空格将导致无法工作会话。检查您的控制器(和其他组件,如果有)对于关闭“?>”
后的额外空格/新行或打开标记前的空格“,如果控制器中的php打开标记前有空格或php关闭标记后有空格,将导致会话无法工作。检查您的控制器(和其他组件,如果有)是否在关闭“?>”
后有多余的空间/新行,或打开标记前有空格“如果控制器中的php打开标记前有空格或php关闭标记后有空格将导致无法工作会话。检查您的控制器(和其他组件,如果有)对于关闭“?>”后的额外空间/新行“
或打开标记前的空间”是否确实启用了会话支持?我遵循cakephp网站上的博客教程,flash消息可以正常工作。我使用的元素也会得到配置输出。这意味着会话支持已启用,对吗?请查看phpinfo()
的输出,并搜索session
以查看它是否已启用在“会话”部分中,会话支持已启用我认为刷新页面后将使用会话。调用Ajax后不能直接使用会话。之后你必须刷新页面。你确定你启用了会话支持吗?我遵循了cakephp网站上的博客教程,flash消息可以正常工作。我使用的元素也会得到配置输出。这意味着会话支持已启用,对吗?查看phpinfo()
的输出,搜索session
以查看它是否已启用在“会话”部分,会话支持已启用我认为会话将启用