【发布时间】: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