Laravel javascript 位置应该在视图中或 public

Laravel javascript location should be in view or public

我有一个 javascript 需要 PHP 提供的根目录路径来调用 JSON 文件。

我不确定这段代码应该在 public/js 中还是在我的 template.blade.php 中?

如果它在public/js,那么我必须像下面这样指定一个绝对路径,所以每次我想改变我的目录名或域名我都必须改变路径也是如此。

url: "/myBookStore/public/api/book-type/"

    <script>
    $().ready(function(){
    $("#book_type").keyup(function(){
        $.ajax({
             type: "GET",
             url: "/myBookStore/public/api/book-types/" + $("input[name=book_type]").val(),
             dataType: "json",
             success: function(json){
                //do stuff
             }
        });
    });
});
    </script>

如果我把它放在template.blade.php中,我可以用URL::to('/')来指定基数url。但是它必须是 public 文件夹的 OUTSIDE,我不确定这是否是好的做法?

template.blade.php

    <script>
    $().ready(function(){
    $("#book_type").keyup(function(){
        $.ajax({
             type: "GET",
             url: {{ URL::to('/') }} + "/api/book-types/" + $("input[name=book_type]").val(),
             dataType: "json",
             success: function(json){
               //do stuff
             }
        });
    });
});
    </script>

只需创建一个

<meta name="base_url" content="{{ URL::to('/') }}">

并使用 javascript 阅读此元标记的内容。

jQuery:

var url = $('meta[name="base_url"]').attr('content');

javascript:

var url = document.getElementsByName('base_url')[0].getAttribute('content')

通过这种方式,您可以将 javascript 放在 public js 文件夹中,并且仍然始终获得正确的 url。