45 votes

Erreur Ajax LARAVEL 419 POST

J'apprécierais vraiment une aide à ce sujet. J'ai essayé des tonnes de solutions comme celles qui sont affichées dans ce forum, mais je n'arrive pas à le faire fonctionner.

Mon appel ajax est quelque chose comme

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

J'appelle la vue par ma route

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

Et contrôleur

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

Mon company.blade.php est

    @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

J'obtiens cette erreur

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

97voto

Dhiraj Points 1626

Laravel 419 post error est généralement liée à api.php et à l'autorisation des jetons.

Laravel génère automatiquement un "jeton" CSRF pour chaque session utilisateur active gérée par l'application. Ce jeton est utilisé pour vérifier que l'utilisateur authentifié est bien celui qui effectue les demandes à l'application.

Ajoutez ceci à votre appel ajax

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

ou vous pouvez exclure certains URI dans le middleware de jeton VerifyCSRF

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

8voto

Adnan Rasheed Points 374

L'erreur 419 se produit lorsque vous ne postez pas de csrf_token. Dans votre méthode de post, vous devez ajouter ce token avec d'autres variables.

3voto

EXayer Points 53

J'ai eu le même problème, la régénération de la clé d'application a aidé - php artisan key:generate

1voto

Tim Hinz Points 297

Vous n'avez pas de données que vous soumettez ! Essayez d'ajouter cette ligne à votre ajax :

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

Assurez-vous de changer le nom pour qu'il corresponde !

Vos données doivent également être soumises à l'intérieur d'une fonction de soumission de formulaire.

Votre code devrait ressembler à quelque chose comme ceci :

<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>

1voto

J'ai eu le même problème, qui s'est avéré être un problème avec la taille maximale des messages en php. L'augmenter a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X