как передать именованный параметр маршрута с помощью ajax - PullRequest
2 голосов
/ 16 апреля 2019

Мне нужно передать параметр маршрута с ajax, но я использую именованный метод маршрута в ajax коде.

маршрут, по которому я хочу идти Маршрут

Route::post('/edit/{id}', 'ArticleController@updateArticle')->name('updateArticle');

Ajax

var id= $("input[name=editId]").val();
$.ajax({
   type:'POST',
   enctype: 'multipart/form-data',
   url:"{{ route('updateArticle',"id") }}",
   data: formdata,
   contentType: false,
   processData: false,
   success:function(data){
        $('.alert-success').html(data.success).fadeIn('slow');
        $('.alert-success').delay(3000).fadeOut('slow');
   }
});

Я хочу использовать переменную id в ajax URL.

Ответы [ 4 ]

1 голос
/ 16 апреля 2019

Поместите + вокруг id переменной и убедитесь, что вы передаете X-CSRF-Token через formdata переменную или попробуйте отправить manualy :

замените эту строку:

url: "{{route ('updateArticle'," id ")}}",

следующим:

url: "{{route ('updateArticle'," + id + ")}}",

var id= $("input[name=editId]").val();
$.ajax({
   type:'POST',
   enctype: 'multipart/form-data',
   url:"{{ route('updateArticle',"+id+") }}",
   data: formdata,
   contentType: false,
   processData: false,
   success:function(data){
        $('.alert-success').html(data.success).fadeIn('slow');
        $('.alert-success').delay(3000).fadeOut('slow');
   }
});
0 голосов
/ 16 апреля 2019

Попробуйте использовать функцию замены:

var id = $("input[name=editId]").val();
var url = "{{ route('updateArticle', ":id") }}";
url = url.replace(':id', id);

$.ajax({
   type:'POST',
   enctype: 'multipart/form-data',
   url: url,
   data: formdata,
   contentType: false,
   processData: false,
   success:function(data){
        $('.alert-success').html(data.success).fadeIn('slow');
        $('.alert-success').delay(3000).fadeOut('slow');
   }
});
0 голосов
/ 16 апреля 2019

Вы можете сделать это, как показано ниже, просто жестко закодировать URL и идентификатор

var id= $("input[name=editId]").val();

$.ajax({
   type:'POST',
   enctype: 'multipart/form-data',
   url:"edit/1",
   data: formdata,
   contentType: false,
   processData: false,
   success:function(data){
        $('.alert-success').html(data.success).fadeIn('slow');
        $('.alert-success').delay(3000).fadeOut('slow');
   }
});
0 голосов
/ 16 апреля 2019

Вы можете сделать это так.

В вашем блейд-файле

<script>
window.your_route = "{{ route('updateArticle',['id'=>$id]) }}";
</script>

В вашем JavaScript вы можете использовать созданную переменную.

  $.ajax({
   type:'POST',
   enctype: 'multipart/form-data',
   url:window.your_route,
   data: formdata,
   contentType: false,
   processData: false,
   success:function(data){
        $('.alert-success').html(data.success).fadeIn('slow');
        $('.alert-success').delay(3000).fadeOut('slow');
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...