【问题标题】:Laravel convert a string variable to jQueryLaravel 将字符串变量转换为 jQuery
【发布时间】:2021-07-30 08:38:12
【问题描述】:

我目前包含一个名为$filter 的变量,其中包含一个动态字符串,例如可以是Liverpool。我想将此字符串转换为 jQuery/JS 字符串,以便我可以预先选择选择菜单的值。

脚本

  <script>
    $.name = JSON.stringify({{$filter}});

    console.log($.name);

    $(document).ready(function(){
        $("#filter").val(string);
    });
</script>

选择菜单

<select class="form-select" name="filter" id="filter"> </select>

当我在控制台中转储值时出现此错误

filter_teams:261 Uncaught ReferenceError: Liverpool is not defined

如何正确地将 Laravel 刀片变量转换为 JS?

【问题讨论】:

  • console.log($.name); 是在打印什么东西吗?还有string这里是什么?
  • 错误会出现在console.log()之前
  • 缺少引号 - 我会使用反引号:JSON.stringify(`{{$filter}}`); 或不将其字符串化:$.name = {{$filter}};

标签: javascript php jquery laravel


【解决方案1】:

你试试下面的方法。

只需将您的 laravel 变量分配给 jquery 变量并尝试将值与选择框中的选项匹配。

var string = "{{@$filter}}";

$(document).find('#filter option[value="'+string+'"]').prop('selected', true);

可能通过这种方式您可以实现您的解决方案。谢谢。

【讨论】:

    【解决方案2】:

    您可以使用@json blade directive:

    <script>
        $.name = @json($filter);
    
        console.log($.name);
    
        $(document).ready(function(){
            $("#filter").val(string);
        });
    </script>
    

    【讨论】:

    • 由于某种原因,我的 phpstorm 在 = 和 @ $.name = @json($filter); 之间有一条红线。预期的表达方式
    • 你知道原因吗?
    • @Lowtiercoder 这是在 .blade.php 文件中吗?您是否安装了刀片 PhpStorm 插件并且是最新的?
    • 可能是 PHPStorm 不理解,您正在混合 PHP 和 JavaScript,因为在 JavaScript 中这将是某种非法字符。
    • 是的,如果我直接在页面内容内调用@json,它不会出错,我已经安装了扩展。似乎 shaedrich 提到的是混合语言,下面的解决方案解决了我的问题,但感谢您花时间回复
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2011-08-27
    • 2010-12-04
    • 2017-10-01
    相关资源
    最近更新 更多