JavaScript变量在Laravel中不起作用

时间:2014-07-31 19:41:35

标签: javascript php laravel laravel-4 blade

我网站上的所有网页都有相同的标题。我实现了这样:

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");
    }
});

我的问题

即使已发送SuccessfulMessage,警报始终为test

重要提示

当我在谷歌浏览器中使用F12查看实际的HTML时,我可以看到:

<script>
        var successfulMessage = "asdf";
    </script>

因此定义了变量。

2 个答案:

答案 0 :(得分:1)

适用于我的代码是:

$(document).ready(function(){
    var typeOfSuccessfulMessage = typeof successfulMessage;

    if(typeOfSuccessfulMessage == 'string'){
       alert(successfulMessage);
    }else{
        alert("undefined");
    }
});

非常感谢@martinezjc,@ lowerends和@Cthulhu

答案 1 :(得分:0)

更改此代码:

修改

尝试更改if / else javascript块中的条件

$(document).ready(function() {
     @if(isset($successfulMessage))
        var successfulMessage = {{$successfulMessage}};
    @endif

    if( !typeof successfulMessage === 'undefined' ) {
        alert("test");
    } else {
        alert(successfulMessage);
    }
});

希望这有效:)