Laravel Ajax 无法在 url 中传递参数,但可以使用常量
Laravel Ajax can't pass parameter in url but works with a constant
我正在编写一个 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 中发送图层参数,我会收到以下错误
message : "Missing required parameters for [Route: layers.destroy]
[URI: admin/layers/{layer}]. (View:
/var/www/laravelapp/resources/views/layers.blade.php)"
为什么是layer_id,这里是
url: "{{ route('layers.destroy',['layer' => "+layer_id+"])}}",
没有被实际值代替?
当您像 ['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) {
}
});
{{URL::to('/destroy')}}+'/'+layer_id;
路线
Route::get('/destroy/{id}', 'controller@destroy')
控制器
public function destroy($id){
// use $id here
}
希望你明白。
我正在编写一个 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 中发送图层参数,我会收到以下错误
message : "Missing required parameters for [Route: layers.destroy] [URI: admin/layers/{layer}]. (View: /var/www/laravelapp/resources/views/layers.blade.php)"
为什么是layer_id,这里是
url: "{{ route('layers.destroy',['layer' => "+layer_id+"])}}",
没有被实际值代替?
当您像 ['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) {
}
});
{{URL::to('/destroy')}}+'/'+layer_id;
路线
Route::get('/destroy/{id}', 'controller@destroy')
控制器
public function destroy($id){
// use $id here
}
希望你明白。