【发布时间】:2017-09-30 06:04:38
【问题描述】:
在尝试使用 Laravel Session 在刀片中设置 JS 变量以刷新一些数据时,我在 Laravel 4.2 中遇到了一些奇怪的问题。这很简单,我无法弄清楚我错过了什么......
目标:在用户注册后立即触发 Javascript 网站浏览。 方法:将一个welcome_tour 变量写入会话,然后在页面刷新时设置一个JS 布尔值,从而在JS 中启动游览。
我的注册功能以会话设置结束:
Session::flash('welcome_tour', TRUE);
我正在测试它是否已被拾取并使用我的刀片中的以下内容正确设置 JS 变量:
<script>
@if(Session::has('welcome_tour'))
var welcome_tour = true;
@else
var welcome_tour = false;
@endif
</script>
{{ var_dump(Session::all()) }}
生成的 HTML 中的 JS sn-p 表示未找到 welcome_tour :-(
<script>
var welcome_tour = false;
</script>
但是 var_dump 打印到屏幕上的 Session 详细信息表明它设置正确:
array (size=4)
'_token' => string 'HHBowu6wdYlIKy4kFiWYwCe4lQRkFbG7jdNDlYXQ' (length=40)
'flash' =>
array (size=2)
'old' =>
array (size=1)
0 => string 'welcome_tour' (length=12)
'new' =>
array (size=0)
empty
'login_82e5d2c56bdd0811318f0cf078b78bfc' => string '1137' (length=4)
'welcome_tour' => boolean true
Session 变量怎么可能既存在又不存在?
【问题讨论】:
-
如果你打开浏览器控制台并输入
welcome_tour会发生什么?另外,当您在浏览器中查看页面源代码时,HTML 中是否包含welcome_tour? -
谢谢弗兰克。奇怪的是,控制台告诉我welcome_tour 正确设置为true。我想这足以让我触发我的旅程,但奇怪的是 HTML 源将它设置为 false,而在其他地方却神秘地设置为 true。
-
您是否可以在多个位置设置
welcome_tour的值?所以您查看的是 HTML 源代码的错误部分? -
否 - 全局查找仅在此位置显示
welcome_tour。为了 100% 相信,我将变量名称更改为绝对唯一的jabba_the_hut并得到完全相同的结果——HTML 显示变量设置为 false,但控制台将其报告为 true。