我试图使用jQuery $ .post方法发布一个表单但是我在Laravel框架中收到了MethodNotAllowedHttpException错误。我知道路由/控制器的请求类型有些不匹配,但我无法弄清楚在哪里。
jQuery Call
$.post("create", $("#myForm").serialize(), function(data) {
var json=JSON.parse(data);
console.log(json);
});
控制器
class create extends Controller
{
//
public function createRecord(){
$test="test";
return $test;
}
}
路线(web.php)
Route::post('create',array('uses'=>'create@createRecord'));
答案 0 :(得分:0)
如果所有操作都通过了控制器,请按照这样的路线制作。
Route::post('create', 'create@createRecord');
这是我唯一能提出的建议。看看是否修复了它。
答案 1 :(得分:0)
试试这个
在中间件中创建cors.php以允许所有请求
<?php
namespace App\Http\Middleware;
use Closure;
class Cors {
public function handle($request, Closure $next)
{
header("Access-Control-Allow-Origin: *");
// ALLOW OPTIONS METHOD
$headers = [
'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin'
];
if($request->getMethod() == "OPTIONS") {
// The client-side application can set only headers allowed in Access-Control-Allow-Headers
return Response::make('OK', 200, $headers);
}
$response = $next($request);
foreach($headers as $key => $value)
$response->header($key, $value);
return $response;
}
}
在verifyCsrfToken.php的中间件中添加此
protected $except = [
//
'api/*',
];
在routes.php中创建应用的路线
Route::group(['middleware' => 'cors'], function()
{
Route::post('api/create', 'create@createRecord');
});
答案 2 :(得分:0)
尝试将csrf标记添加到您的ajax函数中。语法可能不正确,但这是逻辑。
$.post("create", $("#myForm").serialize(),"_token" : "{{csrf_token()}}", function(data) {
var json=JSON.parse(data);
console.log(json);
});