Мне нужно передать параметр маршрута с помощью 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 в лезвие, это плохая практика. Пишите его в файле JavaScript и загружайте в свое представление.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать это так.
В вашем файле блейда
<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. Спасибо за вашу помощь
Рад помочь вам :)
Мой URL-адрес получает +id+, а не идентификатор
Вы можете сделать это так, как показано ниже, просто жестко закодируйте 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');
}
});
но идентификатор динамический
Попробуйте использовать функцию замены:
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');
}
});
Это действительно здорово
Человек, ты спасаешь жизнь
У меня была такая же проблема, просто измените свой 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) {
}
});
});
});
Я делаю это двумя способами
$(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);
}
});
});
$(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);
}
});
});
Вы можете использовать любой из них :)
эта функция ajax находится в файле
blade?