Как передать именованный параметр маршрута с помощью ajax

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

маршрут я хочу пойти Маршрут

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

Аякс

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.

эта функция ajax находится в файле blade?

Tharaka Dilshan 16.04.2019 08:32

да, в блейд-файле

Arshad Ameen 16.04.2019 08:34

Не записывайте код Ajax в лезвие, это плохая практика. Пишите его в файле JavaScript и загружайте в свое представление.

Milind Patel 16.04.2019 08:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
3
15 867
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

<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');
   }
});

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

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

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');
   }
});

ваш код работает .. я забыл X-CSRF. Спасибо за вашу помощь

Arshad Ameen 16.04.2019 08:59

Рад помочь вам :)

Kamalesh M. Talaviya 16.04.2019 09:02

Мой URL-адрес получает +id+, а не идентификатор

Ray Coder 02.02.2021 11:44

Вы можете сделать это так, как показано ниже, просто жестко закодируйте 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');
   }
});

но идентификатор динамический

Arshad Ameen 16.04.2019 08:41

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

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');
   }
});

Это действительно здорово

A.A Noman 09.11.2021 03:12

Человек, ты спасаешь жизнь

aliencity 09.12.2021 19:49
Ответ принят как подходящий

У меня была такая же проблема, просто измените свой URL-адрес 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');
   }
});

in form

 <form id = "form-create-role" action = "{{route('role-create')}}" >

in file role-create.js

 $(function(){
  
  $('#form-create-role').submit(function (event) { 
    event.preventDefault();
    $.ajax({
      type: "post",
      url: $(this).attr('action'),
      data: $(this).serialize(),
      dataType: "json",
      success: function (response) {
        
      }
    });
    
  });

});

Я делаю это двумя способами

  1. Используя полный URL
$(document).on('click', '.view', function(){
    let contactId = $(this).attr('data-id');
    $.ajax({
        type: "GET",
        url: window.location.origin + "/view-contact-details/" + contactId,
        success: function (response) {
            console.info(response);
        }
    });
});
  1. Используя именованный параметр маршрута
$(document).on('click', '.view', function(){
    let contactId = $(this).attr('data-id');
    let url = "{{ route('view.contact', ['id' => ":contactId"]) }}";
    url = url.replace(":contactId", contactId);
    $.ajax({
        type: "GET",
        url: url,
        success: function (response) {
            console.info(response);
        }
    });
});

Вы можете использовать любой из них :)

Другие вопросы по теме