[英]MethodNotAllowedHttpException : Calling POST method using Ajax Laravel
[英]Laravel 5.5 - MethodNotAllowedHttpException when using POST method
我创建了过滤器以从数据库获取数据。 当我使用GET方法时,可以使用但使用POST方法时,出现错误:
Symfony \\组件\\ HttpKernel \\异常\\ MethodNotAllowedHttpException
我花了几个小时寻找解决方案,但似乎我在这里遗漏了一些东西。
为了进行测试,我尝试直接在路线中获得结果,但这仍然是一个问题。
这可行。
<?php
use App\test;
Route::get('/', function () {
$test = test::all();
return $test;
});
这行不通。
<?php
use App\test;
Route::post('/', function () {
$test = test::all();
return $test;
});
这个
use App\test;
Route::post('/', function () {
$test = test::all();
return $test;
});
应该始终是Request
的实例,因此您不能像GET
这样直接在浏览器中访问它,而必须向其中发布一些表单数据。 因此最好将其重命名为以下内容:
use App\test;
Route::post('/test', function (Request $request) {
$test = test::all();
return $test;
});
此$request
保留您的表单数据
Route::get()
和Route::post()
定义了指定http方法的路由处理程序。
如果仅定义此路线:
Route::post('/', function () {
$test = test::all();
return $test;
});
然后,您必须确保对该URL的所有调用均使用POST方法。 如果使用GET方法对该URL进行请求,则将获得MethodNotAllowedHttpException
异常,因为您仅定义了POST方法处理程序。
您似乎忘记了{{csrf_field()}}。 将此添加到您的窗体。
如果要发布的数据没有csrf,则在laravel 5.5中,您会看到此错误。
请注意,如果您要编写发布路线,请在测试时确保将数据发布到页面上,否则将出错。
发布路由不能仅通过调用url进行测试,方法应为post。 如果您使用邮递员检查路线URI,它将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.