如何使用ajax传递命名路由参数
如何使用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
。
问题的原因是在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。
问题已经解决,非常感谢你的帮助!
这个问题的原因是在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"的错误。
使用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请求能够成功执行。