【问题标题】:JavaScript variable doesn't work in LaravelJavaScript 变量在 Laravel 中不起作用
【发布时间】: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


【解决方案1】:

对我有用的代码是这样的:

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

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

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

【讨论】:

  • @martinezjc 我需要两天时间来接受我自己的回答 :) 但我真的很感谢你的帮助
【解决方案2】:

修改这段代码:

编辑

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

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

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

希望这可行:)

【讨论】:

  • 您的新代码仅在定义变量时才有效,但在没有变量的情况下,我收到此错误消息:Uncaught ReferenceError: successfulMessage is not defined
  • 您的第二个新代码有语法错误,无法在 jquery 函数中写入 @
  • 我检查并告诉了你。不能在 jquery 中写 @
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多