Laravel MethodNotAllowedHttpException使用jQuery $ .post发布表单时

时间:2016-11-06 19:54:04

标签: php jquery ajax laravel post

我试图使用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'));

3 个答案:

答案 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);
});