如何使用ajax传递命名路由参数

8 浏览
0 Comments

如何使用ajax传递命名路由参数

我需要在ajax中传递路由参数,但我在ajax代码中使用了命名路由方法。\n我想要访问的路由是:\n路由\n

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

\nAjax\n

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

\n我想在ajax的URL中使用变量id

0
0 Comments

问题的原因是在ajax请求中没有正确传递命名路由参数。解决方法是将参数放在双引号内,并使用加号将其与字符串拼接在一起。同时,还需要通过formdata变量传递X-CSRF-Token。

下面是修改后的代码:

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-Token。

问题已经解决,非常感谢你的帮助!

0
0 Comments

这个问题的原因是在ajax请求的url中没有正确地传递命名的路由参数。解决方法是将参数id添加到url中,以确保命名的路由参数被正确地传递。

以下是解决方法的代码示例:

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

以上代码中的{{ route('updateArticle') }}是一个命名的路由,它会生成一个具体的路由URL。为了传递命名的路由参数,我们将参数id添加到URL末尾,使用+连接符连接。

这样修改后的代码将正确地传递命名的路由参数,解决了"Missing required parameter"的错误。

0
0 Comments

使用replace函数尝试:

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

真是太棒了

你真是救命恩人

哇!太好了!!!

问题的原因:在Ajax请求中,想要通过命名路由传递参数,但是无法直接将参数传递给URL。

解决方法:使用JavaScript的replace函数,将URL中的":id"替换为实际的参数值。这样可以动态地将参数传递给URL,使得Ajax请求能够成功执行。

0