如何通过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>
我在这里尝试像这样将 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>