【问题标题】:Laravel duplicated view after selecting dropdown option选择下拉选项后Laravel重复视图
【发布时间】:2019-08-19 04:37:04
【问题描述】:

我的 Laravel 视图有问题。我正在通过 ajax 获得所需的数据,我也可以在我的视图中显示该数据。但是,我发现每当我在下拉列表中选择某些内容时,数据就会出现,但整体布局会重复。我看到我的控制台并发现在表格中我在使用下拉列表选择某些内容后创建了另一个布局。我有我的代码,请检查一下。

<select>`enter code here`
        @foreach(App\StudentsClass::all() as $class)

                <option id="class{{$class->id}}" value="{{$class->id}}">{{$class->class_name}}</option>

        @endforeach
        </select>

        <table id="studentsData" class="table table-striped table-bordered table-list-search">
            <thead>
                <tr>
                    <th>#</th>
                    <th>Student ID</th>
                    <th>Student Name</th>
                    <th>Attendance</th>
                </tr>
            </thead>
                @foreach($students as $student)
            <tbody>
                <tr>
                    <th>{{$student->id}}</th>
                    <td>{{$student->student_id}}</td>
                    <td>{{$student->first_name}} {{$student->last_name}}</td>
                    <td>
                        <div class="form-group">
                            <select class="form-control" id="gender">
                                <option>Present</option>
                                <option>Absent</option>
                                <option>Leave</option>
                            </select>
                        </div>
                    </td>
                </tr>
            </tbody>
                    @endforeach
        </table>
        <a class="fas fa-folder-open btn btn-success float-right mb-4 mr-2"> Save</a>
    </div>





    <script>

        $(document).ready(function () {
            @foreach(App\StudentsClass::all() as $class)
            $("#class{{$class->id}}").click(function () {
                var classes = $("#class{{$class->id}}").val();
                $.ajax({

                                    url: '{{url('/students/attendance')}}',

                                    type: "GET",

                                    dataType: "html",
                    data: 'class_id=' + classes,

                    success:function(response) {

                                        // console.log(response);
                        $('table[id=studentsData]').html(response);

                    }

                     });
            });
            @endforeach
        });

【问题讨论】:

  • 您能否添加一个示例,说明您从/students/attendance url 返回的数据?
  • 我从数据 url 获取的数据是学生行 ID、学生 ID 和学生姓名,但是在成功获取这些数据后,我每次都看到我的布局被重复并且有些奇怪。我在控制台中看到我的表格中有整个布局,但在我的代码中我没有类似的东西
  • 我注意到的另一件事是,如果我删除了那个 url,那么我的代码仍然可以正常工作
  • 我真的不知道幕后发生了什么

标签: javascript jquery laravel laravel-blade


【解决方案1】:

如果不确切知道 ajax 调用返回的内容,很难说 - 但听起来您可能会返回完整视图(来自&lt;html&gt; to &lt;/html&gt; 的所有内容)并将其插入表中......或者表格的完整 html 标记,在每次 ajax 调用时创建新的嵌套表格。

你能分享你的 ajax 调用的结果吗? (您在 console.log(response); 中看到的内容)

另外,我不认为这是相关的,但注意到您可以对代码做一些事情来简化。例如,我建议稍微更改下拉菜单的结构并给它一个像这样的 ID ...

<select id="class_select">
    @foreach(App\StudentsClass::all() as $class)
        <option value="{{$class->id}}">{{$class->class_name}}</option>
    @endforeach
</select>

然后,您可以调整 javascript 以查找类 ID 并在每次更改下拉菜单时触发 ajax 调用,而不是循环遍历每个类并添加专用函数。

<script>
    $(document).ready(function(){
        $('#class_select').change(function(){
            var class = $(this).val();
            $.ajax({
                url: '{{url('/students/attendance')}}',
                type: "GET",
                dataType: "html",
                data: 'class_id=' + classes,
                success:function(response) {
                    // console.log(response);
                    $('#studentsData').html(response);
                }
            });
        });
    });
</script>

希望对您有所帮助!如果我们能看到 ajax 调用返回什么,我想我们可以给出更好的答案。

【讨论】:

  • 从控制台中的 ajax 我正在返回所需的学生数据,但是当我将其应用于视图时,它会复制我的完整页面布局。我应用您的代码但结果相同
  • 而且每当我运行这个 console.log(response);然后在控制台中我可以看到正确的表,我看到了我需要的东西
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 2015-11-17
  • 2021-01-02
  • 1970-01-01
  • 2010-12-24
  • 2013-07-29
  • 2018-09-17
相关资源
最近更新 更多