【发布时间】:2014-09-23 21:52:12
【问题描述】:
我网站中的所有页面都有相同的标题。我是这样实现的:
extends('layouts.main')
现在在某些页面中,我需要发送成功消息,而在其他页面中则不需要。我是这样实现的:
return....->with(array(
sucessfulMessage => 'asdf'
));
请注意,我只是在某些页面而不是所有页面中这样做。
现在我想在 JavaScript 中使用该变量。我在 layout.main 中做了这个:
<head>
{{ HTML::script('/js/jquery-2.1.1.js')}}
@if(isset($successfulMessage))
<script>
var successfulMessage = "{{$successfulMessage}}";
</script>
@endif
{{ HTML::script('/js/myPopupScript.js')}}
</head>
然后在myPopupScript.js 我这样做了:
$(document).ready(function(){
if(!typeof successfulMessage === 'undefined'){
alert(successfulMessage);
}else{
alert("test");
}
});
我的问题
即使成功消息已发送,警报也始终为test。
重要提示
当我在 Google Chrome 中使用 F12 查看实际的 HTML 时,我可以看到:
<script>
var successfulMessage = "asdf";
</script>
所以定义了变量。
【问题讨论】:
-
!typeof successfulMessage === 'undefined'=(!(typeof sucessfullMessage)) === 'undefined'=false === 'undefined'=false. -
@Cthulhu 无法理解您的评论,您能解释一下吗?
-
只是说如果考虑到正确的运算符优先级,您的条件将永远不会成立。你想要的是
typeof successfulMessage !== 'undefined'。 -
@Cthulhu 你说得对,因为我试图在条件之前定义变量但仍然无法正常工作。这么好的提示,请问怎么解决?
-
这里真正的问题是,当您尝试访问变量
successfulMessage从未分配过php 值时,请记住php 执行是服务器端的,并且脚本首先加载。
标签: javascript php laravel laravel-4 blade