php 未捕获引用错误:无法在初始化之前访问词法声明'html'

7hiiyaii  于 2023-03-07  发布在  PHP
关注(0)|答案(2)|浏览(116)

有人能给我解释一下在chrome和firefox中访问let声明之前的变量时会出现的奇怪的错误信息吗?"让X"。

<script>
    $(document).ready(function (e) {
        showJobs();
        function showJobs() {
            let html = '' +
                '@foreach(auth()->user()->jobs as $job)'+
                '<tr>'+
                '<td class="fw-normal">{{ $job->id }}</td>'+
                '<td class="fw-normal">{{ $job->employment_type }}</td>'+
                '<td class="fw-normal">{{ $job->start_date }}</td>'+
                '<td class="fw-normal">{{ $job->end_date }}</td>'+
                '<td class="fw-normal">{{ $job->state }}</td>'+
                '<td class="fw-normal">{{ $job->city }}</td>'+
                '<td>'+
                '<form action="{{ route('job.destroy', $job->id) }}" method="post">'+
                '@csrf'+
                "@method('DELETE')"+
                '<div class="btn-group">'+
                "<a href="+{{ route('job.edit', $job->id) }}+" class='btn btn-info btn-sm'>Delete</a>"+
                '<button type="submit" class="btn btn-danger btn-sm">Edit</button>'+
                '</div>'+
                '</form>'+
                '</td>'+
                '</tr>'+
                '@endforeach'+
                $('#showJobs').append(html);
        }
    });
</script>

我得到这个错误。

我已经把这些密码

<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
f45qwnt8

f45qwnt81#

无法在初始化之前访问词法声明

词法变量在初始化之前被访问。当let或const声明在定义之前被访问时,任何块语句都会发生这种情况。
在您的代码中,html变量在声明为$('#showJobs').append(html);之前被访问

意外标记:识别码

这是语法错误。
在您的代码中,应该用单引号而不是双引号"@method('DELETE')"来写
因为转换时已使用双引号

<input type="hidden" name="_method" value="DELETE">

下面是正确的代码:

<script>
$(document).ready(function (e) {
    showJobs();
    function showJobs() {
        let html = '' +
            '@foreach(auth()->user()->jobs as $job)'+
            '<tr>'+
            '<td class="fw-normal">{{ $job->id }}</td>'+
            '<td class="fw-normal">{{ $job->employment_type }}</td>'+
            '<td class="fw-normal">{{ $job->start_date }}</td>'+
            '<td class="fw-normal">{{ $job->end_date }}</td>'+
            '<td class="fw-normal">{{ $job->state }}</td>'+
            '<td class="fw-normal">{{ $job->city }}</td>'+
            '<td>'+
            '<form action="{{ route('job.destroy', $job->id) }}" method="post">'+
            '@csrf'+
            '@method('DELETE')'+
            '<div class="btn-group">'+
            "<a href="+{{ route('job.edit', $job->id) }}+" class='btn btn-info btn-sm'>Delete</a>"+
            '<button type="submit" class="btn btn-danger btn-sm">Edit</button>'+
            '</div>'+
            '</form>'+
            '</td>'+
            '</tr>'+
            '@endforeach';
            $('#showJobs').append(html);
    }
});
erhoui1w

erhoui1w2#

不管它值多少钱;当您也会收到此错误时的建议答案。
我发现我得到了同样的错误,因为我在循环的更后面重新声明了i
在重命名主循环计数器之后,一切都恢复正常。

相关问题