在laravel刀片路由中使用JavaScript变量

时间:2017-01-23 17:53:21

标签: javascript php ajax laravel

我有一段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") + '&nbsp; - &nbsp;' + 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

谢谢,

此致

罗伯特

英国伦敦

2 个答案:

答案 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一无所知。

有些软件包旨在替代客户端的功能,或者您可以编写自己的帮助函数来解决它。

然而,遗憾的是,你无法实现这种精确的仿真。