Laravel 6 - @push 和@stack

Laravel 6 - @push and @stack

大家好我是 Laravel 的新手,我目前正在使用 Laravel 6.0

出于某种原因,我使用@push 的javascript 无法正常工作。该脚本仅在我将代码粘贴到 blade 文件而不使用资产文件夹时才有效。

add.blade.php

@extends('layouts.app')
@section('content')
// Long HTML code
@endsection

@push('scripts')
<script src="{{ asset('js/position.js') }}"></script>
@endpush

布局 > app.blade.php

 <main class="py-4">
      @yield('content')
    </main>
  </div>
  @stack('scripts')
</body>

public(资产) > js > position.js

 $('#department').change(function(){
    var departmentID = $(this).val();    

        if(departmentID) {
        $.ajax({
        type:"GET",
        url:"{{url('get-section-list-position')}}?department_id="+departmentID,
        success:function(res){               
            if(res) {
            $("#section").empty();
            $("#section").append('<option>Please Select Section</option>');
            $.each(res,function(key, value){
            $("#section").append('<option value="'+key+'">'+value+'</option>');
          });
          } else {
            $("#section").empty();
          }
        }
      });
    } else {
        $("#section").empty();
    }      
  });

如果我将脚本粘贴到 add.blade.php 并使用 @section,它可以工作,但我担心系统的安全性会受到威胁。请帮忙。

您的 Javascript 将无法独立运行,因为它不会被 Blade 解析,但它包含 {{url('get-section-list-position')}}。如果您想使用 Blade 指令,请将 {{url('get-section-list-position')}} 更改为 "hardcoded" URL 或将您的 Javascript 代码放在 @push('scripts') 中:

@push('scripts')
<script>
$('#department').change(function(){
    var departmentID = $(this).val();    

        if(departmentID) {
        $.ajax({
        type:"GET",
        url:"{{url('get-section-list-position')}}?department_id="+departmentID,
        success:function(res){               
            if(res) {
            $("#section").empty();
            $("#section").append('<option>Please Select Section</option>');
            $.each(res,function(key, value){
            $("#section").append('<option value="'+key+'">'+value+'</option>');
          });
          } else {
            $("#section").empty();
          }
        }
      });
    } else {
        $("#section").empty();
    }      
  });
</script>
@endpush