如何将Ajax响应中的变量(stock.id)返回传递给路由以生成编辑库存的URL
$.ajax({
url: 'sectors/stocks/' + $(this).data('sector-id'),
dataType:'json',
beforeSend:function() {
$('.stocks_list').html('Loading...');
}
})
.done(function(data) {
$('.stocks_list').html('<ul>');
$.each(data, function(index, obj_data) {
$.each(obj_data.stocks, function(indx, stock) {
$('.stocks_list').append('<li><a href="{{route("admin.stocks.edit","'+stock.id+'")}}">' + stock.symbol + ' </a></li>');
});
});
})
答案 0 :(得分:49)
您可以先使用占位符生成URL,然后在javascript中替换它。
var url = '{{ route("admin.stocks.edit", ":id") }}';
url = url.replace(':id', stock.id);
$('.stocks_list').append('<li><a href="'+url+'">' + stock.symbol + ' </a></li>');
答案 1 :(得分:2)
感谢lukasgeiter,你让我的一天。有用。只需更改替换方法,因为laravel scape“:”到“%3A”
var url = '{{ url("/admin/solicitud", ":id") }}';
url = url.replace('%3Aid', data.datos[i].id);
dhtml+='<td><a href="'+url+'" class="btn btn-primary" role="button">Ver más...</a></td>';
或简单地只让id字符串
var url = '{{ url("/admin/solicitud", "id") }}';
url = url.replace('id', data.datos[i].id);
dhtml+='<td><a href="'+url+'" class="btn btn-primary" role="button">Ver más...</a></td>';
答案 2 :(得分:1)
在ajax中使用路由的最佳方法。
在隐藏输入中添加路由或将作为属性添加到按钮或链接中。如下所示。
这将保存其他jquery代码,例如get id并传递到url中。很简单,只需从输入中获取URL并作为URL传递即可。就是这样。
<a data-url="{{ route('delete.PendingPatient',['id' => $u->id]) }}" class="btn btn-xs btn-danger btn_delete"> Delete </a>
路线
<?php
Route::delete('/pending_patient/{id}','PatientController@pending_patient'])->name('delete.PendingPatient');
jQuery
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(document).on('click','.btn_delete',function(){
var current = jQuery(this);
var url = current.data('url');
$.ajax({
url: url,
dataType:'json',
beforeSend:function() {
$('.stocks_list').html('Loading...');
}
})
.done(function(data) {
$('.stocks_list').html('<ul>');
});
});
});
});
</script>
答案 3 :(得分:1)
在我看来,最简单的方法是按如下方式将JavaScript变量与刀片字符串连接起来。
情况1:需要路由参数
在这种情况下,将空字符串代替route参数传递给所需的验证。
var url = "{{route('admin.stocks.edit', '')}}"+"/"+stock.id;
案例2:路由参数是可选的
在这种情况下,您不必传递空字符串。
var url = "{{route('admin.stocks.edit')}}"+"/"+stock.id;
答案 4 :(得分:0)
let calculatedId = e.currentTarget.id.split("_")[1];
let url = '{{route('queryToggleStatus', ':queryId')}}';
url = url.replace(':queryId', calculatedId);
$.get(url, function(data, status) {
console.log (data);
})