如何通过html锚标签传递Js变量

How to pass Js variable through html anchor tag

我在这里尝试像这样将 id 传递给控制器​​ {{ route("admin.service.edit", '+val[0]+' )}}

'+val[0]+' 在 url http://localhost:8000/admin/service/**+val%5B0%5D+**/edit

中被视为字符串

但变量在 URL 中看起来像 +val%5B0%5D+ 但我想要它的值

这是我的锚标签

<a href="{{ route("admin.service.edit",'+val[0]+')}}"></a>

下面是完整代码

$.ajax({
       type:'POST',
       url:'/admin/service/show_list',
       data:{ modality_id: m, center_id: h },
       success:function(data) {
           $("#service-table > tbody").empty();
                var trHTML = '';
                $.each( data.service_list1, function( i, val ) {
                    trHTML +='<tbody><tr id="myTableRow" style="text-align:center;"><td>' + val[0] + '</td><td>' + val[1] + '</td><td><a href="{{ route("admin.service.edit",'+val[0]+')}}" class="btn btn-default btn-xs" title="Edit Service"><i class="fa fa-pencil"></i></a></td></tr></tbody>';
                });
                $('#service-table').append(trHTML);
                }
       });

但是我想在 URL 中传递该变量的值,所以我该怎么做呢??

提前致谢

您正在混合 server-side code and client-side code。整个表达式在服务器端求值:

{{ route("admin.service.edit",'+val[0]+')}}

服务器只使用文字字符串值 '+val[0]+'。 JavaScript 不涉及服务器。 将此结果放入页面后,生成的页面将传送到浏览器。 (作为练习,查看浏览器的“查看源代码”选项,看看 JavaScript 代码中到底有什么。)

一个可能的解决方法是,不要尝试将 JavaScript 值直接放入服务器端操作,而是使用占位符值,然后在客户端替换该值。例如,也许是这样的:

{{ route("admin.service.edit","REPLACEME")}}

然后在您的 JavaScript 代码中您将拥有:

trHTML +=
  '[removed for brevity]<a href="http://localhost:8000/admin/service/REPLACEME/edit" class="btn btn-default btn-xs" title="Edit Service"><i class="fa fa-pencil"></i></a></td></tr></tbody>';

并且您可以使用 JavaScript 将已知占位符替换为预期的客户端值:

trHTML +=
  '[removed for brevity]<a href="http://localhost:8000/admin/service/REPLACEME/edit" class="btn btn-default btn-xs" title="Edit Service"><i class="fa fa-pencil"></i></a></td></tr></tbody>'
  .replace('REPLACEME', val[0]);

终于找到解决办法了

我将路由和 ID 保存在一个变量中,然后用 url.replace 函数替换 :id 值。

代码如下

var url = '{{ route("admin.service.edit", ":id") }}';
url = url.replace(':id', val[0]);
<a href="'+url+'" title="Edit Service"><i class="fa fa-pencil"></i></a>