web-dev-qa-db-ja.com

Ajax LARAVEL 419 POSTエラー

私はこれに関するいくつかの助けを本当に感謝します。このフォーラムに投稿されているように、私はたくさんの解決策を試しましたが、それを機能させることはできません。

私のajaxコールは次のようなものです

$(document).ready(function() {
    $("#company").click(function() {
        $.ajax({
            type: "POST",
            dataType:'html',
            url : "/company",
            success : function (data) {
                $("#result").html(data);
            }
        });
    });
});

私はルートを介してビューを呼び出しています

Route::post('/company', 'Ajaxcontroller@loadContent');

そしてコントローラー

public function loadContent()
    {
        return view('listing.company')->render();
    }

私のcompany.blade.phpは

    @foreach ($companies as $company)
            <div class="posting-description">
            <h5 class="header"><a href="#"></a>{{$company->name}}
            </h5>
            <h5 class="header"> {{$company->streetaddress}} {{$company->postalcode}}</h5>  
            <p class="header">
             <span class="red-text"> <?= $service; ?> </span> is available on <span class="green-text"><?php echo $date; ?></span>
           </p>
    @endforeach

このエラーが発生しています

POST http://127.0.0.1:8234/company 419 (unknown status)
37
Cowgirl

Laravel 419投稿エラーは通常、api.phpおよびトークン認証に関連しています

Laravelは、アプリケーションが管理するアクティブなユーザーセッションごとにCSRF「トークン」を自動的に生成します。このトークンは、認証されたユーザーが実際にアプリケーションにリクエストを行っていることを確認するために使用されます。

これをajax呼び出しに追加します

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

または、VerifyCSRFトークンミドルウェアで一部のURIを除外できます

 protected $except = [
        'stripe/*',
    ];
85
Dhiraj

csrf_tokenを投稿しないと419エラーが発生します。 postメソッドでは、このトークンを他の変数に沿って追加する必要があります。

6
Adnan Rasheed

同じ問題がありましたが、アプリケーションキーの再生成が役立ちました-php artisan key:generate

3
EXayer

送信しているデータがありません!この行をajaxに追加してみてください:

data: $('form').serialize(),

必ず名前を変更してください。

また、フォーム送信関数内でデータを送信する必要があります。

コードは次のようになります。

<script>
        $(function () {
                $('form').on('submit', function (e) {
                        e.preventDefault();
                        $.ajax({
                                type: 'post',
                                url: 'company.php',
                                data: $('form').serialize(),
                                success: function () {
                                        alert('form was submitted');
                                }
                        });
                });
        });
</script>
1
Lulceltech

私は同じ問題を抱えていましたが、最終的にはPHPの最大投稿サイズの問題になりました。それを増やすことで問題は解決しました。

1

laravelでは、ビューレンダーを使用できます。例$ returnHTML = view( 'myview')-> render(); myview.blade.phpにはブレードコードが含まれています

1行目ではなく2行目に<?phpを含む構成ファイルがあると、このエラーを受け取りました。

0
eli

あなたのアクションでは、最初にそのような会社をロードする必要があります:

$companies = App\Company::all();
return view('listing.company')->with('companies' => $companies)->render();

これにより、企業変数がビューで使用可能になり、HTMLが正しくレンダリングされるはずです。

ビューをデバッグするには、postman chrome拡張機能を使用してみてください。

0
teeyo