1

我正在编写一个 ajax,它在 url 包含常量时有效,但在 url 包含变量时无效,因为它不会被实际值替换。

$('body').on('click', '.deleteLayer', function () {
        var layer_id = $(this).data('id');
        confirm("Are You sure want to delete record with layer_id="+layer_id+"?");

        $.ajax({
            type: "POST",
            url: "{{ route('layers.destroy',['layer' => "+layer_id+"])}}",
            data: {_method: 'delete', layer:layer_id},
            success: function (data) {
                table.draw();
            },
            error: function (data) {
                console.log('Error:', data);
            }
        });
    });

  });

如果我使用一个值,比如说 50 而不是 layer_id 那么它就可以工作!!!:

 url: "{{ route('layers.destroy',['layer' => 50])}}",

这是我尝试访问的路线:

DELETE | admin/layers/{layer} | layers.destroy   

如果我不在 url 中发送 layer 参数,我会收到以下错误

消息:“缺少 [Route: layers.destroy] [URI: admin/layers/{layer}] 所需的参数。(查看:/var/www/laravelapp/resources/views/layers.blade.php)”

为什么是layer_id,这里

 url: "{{ route('layers.destroy',['layer' => "+layer_id+"])}}", 

没有被实际值代替?

4

2 回答 2

4

当您像['layer' => "+layer_id+"]js 变量一样编写时,它不起作用。它就像+layer_id+路线的参数。你可以这样尝试

var layer_id = $(this).data('id');
var url = '{{ route("layers.destroy", ":id") }}';
url = url.replace(':id', layer_id );
$.ajax({
    type: "POST",
    url: url,
    data: {},
    success: function (data) {

    },
    error: function (data) {

    }
});
于 2019-08-07T11:52:14.463 回答
0
{{URL::to('/destroy')}}+'/'+layer_id;

路线

Route::get('/destroy/{id}', 'controller@destroy')

控制器

public function destroy($id){
// use $id here

}

希望你能理解。

于 2019-08-07T11:52:40.640 回答