我有一段View代码,其中包含来自'.get'请求到Ajax的数据。 .get请求将一些PHP代码传递给控制器,控制器从查询中检索结果并将它们存储在JS对象'bookingObj'中。
问题是,我想使用一些由查询检索并存储在此对象中的id作为到另一个laravel函数的路由的参数'edit'。目前,当我尝试将这些变量连接到刀片帮助函数时,我没有得到它们的实际值,只是逐字变量名。
例如,这在我的代码中:
<a href="{{ route("bookings.edit", [' + bookingObj.id + ',' + bookingObj.tour_id + ',' + bookingObj.datedtour_id + ']) }}">
//在chrome检查器中返回
<a href="http://localhost/laravel/bookings/ + bookingObj.id + /edit/ + bookingObj.tour_id + / + bookingObj.datedtour_id + ">Edit</a>
我希望看到整数(来自数据库的ID)代替'bookingObj'属性。
任何人都知道我是否必须使用任何转换功能才能显示此信息,或者可能愿意解释问题是什么?
非常感谢!
以下是我的其余代码:
$.get(url + variable, function(data){
console.log('Call complete');
//success data
$('tr#bookingstable').remove();
$.each(data, function(index, bookingObj){
var startdate = new Date(bookingObj.datedtourstartdate.replace(/-/g,"/"));
var enddate = new Date(bookingObj.datedtourenddate.replace(/-/g,"/"));
$('table').append(
'<tr id="bookingstable"><td scope="row"><a href="{{ route("bookings.show", $booking->id) }}">' + bookingObj.name + '</a></td><td scope="row">' + bookingObj.size + '</td><td scope="row">' + bookingObj.tour_name + '</td><td scope="row">' + bookingObj.category_name + '</td><td scope="row">' + bookingObj.continent_name + '</td><td scope="row">' + dateFormat(startdate, "dd.mm.yyyy") + ' - ' + dateFormat(enddate, "dd.mm.yyyy") + '</td><td scope="row"><li class="tiny success button"><a href="{{ route("bookings.edit", [' + bookingObj.id + ',' + bookingObj.tour_id + ',' + bookingObj.datedtour_id + ']) }}">Edit</a></li></td><td scope="row"><form method="post" name="_token" value="<?php echo csrf_token(); ?>" action="{{ route("bookings.destroy", ["id" => $booking->id]) }}">{!! csrf_field() !!}<input type="hidden" name="_method" value="DELETE"><input type="hidden" name="booking_id" value="{!! $booking->id !!}"><input type="submit" class="tiny alert button" value="Delete"></form></td></tr>'
); // end append
}); // end each
}); // end get
谢谢,
此致
罗伯特
英国伦敦
答案 0 :(得分:1)
假设您的变量名称是“post_url”,其中您拥有要在 Ajax 中用作发布数据的 url 的动态 url。不如这样做:
let url = "{{ route('old_url') }}";
url = url.replace('old_url', post_url);
$.ajax({
type:'POST',
url:url,
data:{field_name:field_value},
success:function(data){
}
});
答案 1 :(得分:0)
这里的问题是PHP被渲染并随服务器的响应一起发送。这意味着它对您的JavaScript一无所知。
有些软件包旨在替代客户端的功能,或者您可以编写自己的帮助函数来解决它。
然而,遗憾的是,你无法实现这种精确的仿真。