1

在回答之前,请确保您了解我的情况。

  1. 我有 CREATE 闪烁的 ajax 调用。
  2. 我有其他 ajax 调用将闪烁作为 JSON 获取。

当前正在发生的事情:我单击一个创建闪光灯的按钮。之后我运行一个ajax调用来执行:

public function actionGetAllFlashesAsJSON() {
   $flashMessages = Yii::app()->user->getFlashes(true);
   $returnResult = array();
   foreach ($flashMessages as $key => $value) {
     $newItem = array();
     $newItem['message']  = $value;
     $newItem['kind']     = $key;
     $returnResult[]= $newItem;  
   }
   print json_encode($returnResult);
   die();
}

我的问题是,当我连续两次执行这个函数时,它仍然不断返回闪烁。但是,如果我刷新站点,它会显示错误,然后如果我再次按刷新,它就消失了。我的理论是页面刷新会导致其他类型的消息删除......但是什么?在收到上述代码中的消息后,如何强制删除这些消息?

更多背景信息:我将闪烁用作错误消息,但我希望它们在创建时出现在我的网站顶部。Flash 可能是通过 Ajax 创建的,所以我运行 javascript 来检查新消息并显示它们,但我的问题是它多次显示消息,因为在调用 getFlashes 后它们没有被删除?

4

1 回答 1

0

flash 消息由SESSION变量控制,当页面加载时 Yii 将其销毁(可能在框架中相当深的地方)。您必须在 ajax 请求开始时手动销毁所有先前的 flash 消息

您可以使用:getFlashes()来获取所有现有的 flash 消息

对于其他 Flash 消息方法,请查看此处的 CWebUser 文档

于 2012-12-05T09:00:11.730 回答