【问题标题】:How to run ajax script code inside @foreach loop in laravel view?如何在 laravel 视图中的 @foreach 循环内运行 ajax 脚本代码?
【发布时间】:2020-12-11 19:24:47
【问题描述】:

我尝试为每个 @foreach 循环运行脚本,如下面的代码所示。但似乎该脚本仅适用于第一个循环。 如何让它在每个循环中运行?

@foreach ($list as $e)
   @section('js')
                <script type="text/javascript">
                                            
                function a(){
                                                
                        $.ajax({
                            url: '{{ url("get-topik/") }}/{{ $e->id }}'
                        })
                        .done(function(data) {
            
                        var html="";
                           for(var i=0;i<data.length;i++){
                              html += '<span class="badge badge-pill badge-sm badge-primary" style="background-color: #51b3f9">'+data[i].get_topik.topik+'</span>'
            
                          }
                     $("#topik").append(html)
                       });
                    }
                                                
    
                a();
        
            </script>
            @endsection

       <span id="topik">
                            
        </span>

@endforeach

感谢之前:)

【问题讨论】:

  • 你想用这个脚本实现什么?此脚本在模板呈现时不会运行。您基本上是在尝试定义 n 函数,它们都称为a(),这是无法完成的。
  • 我希望 a() 函数运行与具有不同 $e-id @El_Vanja 的 foreach 循环一样多
  • 您必须了解,脚本不会在foreach 中执行。了解client and server side。您在这里所做的是创建一个新的脚本标记,每个标记都定义自己的函数a(),以在模板渲染后、页面加载时执行。而且你不能有多个同名的函数。这里根本不需要AJAX,直接插入要取的数据即可。
  • 欢迎来到 SO... 在循环中发出 ajax 请求绝不是一个好主意或一个好的设计。对于您的情况,我建议您应该在获取 $list 的同一控制器方法中获取 $list 的每个项目的 topik,然后将该数据发送到查看。它不仅可以有效地节省多个网络请求,而且可以减少混乱的设计

标签: javascript php laravel foreach


【解决方案1】:

您可能正在寻找:

<script type="text/javascript">
                            
    function a(id, url){
                                    
            $.ajax({
                url: url + id
            })
            .done(function(data) {

            var html="";
                for(var i=0;i<data.length;i++){
                    html += '<span class="badge badge-pill badge-sm badge-primary" style="background-color: #51b3f9">'+data[i].get_topik.topik+'</span>'

                }
            $("#topik-" + id).append(html)
            });
    }
                                    

    
</script>
        

@foreach ($list as $e)
   
       <span id="topik-{{$e-id}}">
                            
        </span>
        <script> a( {{$e->id}}, {{ url("get-topik/") }} ) </script>

@endforeach

否则,我认为这不是实现您想要做的最好的方法,您是否尝试过仅使用 laravel 而不是与 ajax 混合?

【讨论】:

  • 我试试那个代码。但是为什么没有定义a()函数
猜你喜欢
  • 2022-01-05
  • 2015-06-02
  • 2017-12-24
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
相关资源
最近更新 更多