Laravel中JavaScript无法加载问题求助(附代码片段)
Hey there! Let's figure out why your datepicker script isn't working in Laravel. I've dealt with this exact issue a few times, so here are the key things to check step by step:
1. Make sure your master template has @yield('script')
Your child view uses @section('script'), but this code only gets rendered if your parent template (like layouts/app.blade.php) includes @yield('script') — and it needs to be placed after jQuery and the datepicker plugin are loaded.
For example, your master template's bottom should look something like this:
<!-- Load dependencies FIRST --> <script src="{{ asset('js/jquery.min.js') }}"></script> <script src="{{ asset('js/bootstrap-datepicker.min.js') }}"></script> <!-- Then yield your custom scripts --> @yield('script') </body>
If @yield('script') comes before the dependencies, your code will run before jQuery/datepicker exist, causing it to fail.
2. Verify dependencies are loading correctly
Open your browser's DevTools (F12), go to the Network tab, and refresh the page. Check that:
- jQuery and datepicker JS files have a 200 status code (successfully loaded)
- If using CDNs, the links are correct (no typos, and the CDN is reachable)
3. Check if your target element exists
Make sure your page has an element with the ID start_date:
<input type="text" id="start_date" name="start_date">
You can test this in the DevTools Console by running $('#start_date').length — if it returns 0, either the ID is wrong, or the element is dynamically added after your script runs (in that case, you'll need to initialize the datepicker after the element is created).
4. Look for JavaScript errors
Head to the Console tab in DevTools — any errors here will point directly to the problem:
$ is not defined: jQuery isn't loadeddatepicker is not a function: The datepicker plugin isn't loaded- Other errors might indicate typos in your code
5. Wrap your code in $(document).ready()
Sometimes your script runs before the page is fully loaded, so it can't find the #start_date element. Try wrapping your code like this:
@section('script') <script type="text/javascript"> $(document).ready(function() { $('#start_date').datepicker({ // Add a test configuration to see if it works format: 'yyyy-mm-dd' }); }); </script> @endsection
6. Confirm your child view extends the master template
Double-check that your child view starts with @extends('layouts.app') (or whatever your master template path is). Without this, your @section('script') won't be injected into the master template at all.
内容的提问来源于stack exchange,提问作者R. Mseti

