【问题标题】:Laravel ajax - The POST method is not supported for this route. Supported methods: GET, HEADLaravel ajax - 此路由不支持 POST 方法。支持的方法:GET、HEAD
【发布时间】:2020-10-27 18:42:54
【问题描述】:

我正在尝试在 laravel 中创建一个 ajax,但我得到了这个:“此路由不支持 POST 方法。支持的方法:GET、HEAD”。问题是我之前在我的项目中做过ajax,只有这个我有问题。有人可以帮忙吗?

我的路线:

Route::get('/admin/clients-data','App\Http\Controllers\ClientsController@gravy');
Route::get('/admin/client-details/{slug}','App\Http\Controllers\ClientsController@clientdetails');
Route::post('/admin/client-details/adddocumentstoclient','App\Http\Controllers\ClientsController@adddocumentstoclient');

我的控制器:

public function adddocumentstoclient(Request $request){
        echo '<pre>';
        var_dump('bump');
        echo '</pre>';
        die();
    }

还有我的 js:

$('.tasks input').on('click', function() {
        var emptyValue = 0;
        $('input:checked').each(function() {
            emptyValue += parseInt($(this).val());
        });
        var documents_brought = [];
        var documents = $('.documents_brought input:checked').each(function(){
            documents_brought.push($(this).data('documentid'));
        });
        var client_id = $('.documents_brought').data('clientid');
        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            type: "POST",
            url: "adddocumentstoclient",
            data: {'documents_brought':documents_brought,'client_id': client_id},
            success: function (html) {
                // returndata =  JSON.parse(html);;
                // toastr.success(returndata.message, returndata.title);
            }
        });
        $('.progress-bar').css('width', emptyValue + '%').attr('aria-valuenow', emptyValue);
    });

提前致谢

【问题讨论】:

  • 你的路径不匹配,试试这个url: "/admin/client-details/adddocumentstoclient",
  • 不工作,我试过了
  • 使用名称路由,它将工作 Route::post('/admin/client-details/adddocumentstoclient','App\Http\Controllers\ClientsController@adddocumentstoclient')-&gt;name('adddocumentstoclient'); 并且在您的刀片 ajax url 上将是 url: "{{ route('adddocumentstoclient') }}",
  • Route::post('/admin/client-details/adddocumentstoclient','App\Http\Controllers\ClientsController@adddocumentstoclient')->name('adddocumentstoclient');路由 [adddocumentstoclient] 未定义
  • 是的,就是这样,添加了 ->name('adddocumentstoclient'),清除了路线,然后是 'bum'。谢谢

标签: javascript laravel


【解决方案1】:

好的,问题就在这里

Route::get('/admin/client-details/{slug}','App\Http\Controllers\ClientsController@clientdetails');
Route::post('/admin/client-details/adddocumentstoclient','App\Http\Controllers\ClientsController@adddocumentstoclient');

第一条路线是 get 并且您接受 slug 参数,因此每当您点击 /admin/client-details/adddocumentstoclient 时,它将与第一条路线 get 匹配,您将永远无法到达第二条路线。

这里的解决方案是在/admin/client-details/{slug} 中的slug 之前添加一个前缀,或者更改第二个路由前缀/admin/client-details/ 以区分两个路由。

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2020-06-05
    • 2020-04-19
    • 2021-05-08
    • 2020-01-22
    • 2020-04-25
    • 1970-01-01
    • 2019-08-28
    • 2019-08-31
    相关资源
    最近更新 更多