Symfony\Component\HttpKernel\Exception\HttpException erreur quand j'ai de la méthode post sur la route
Je suis en train de faire une requête ajax avec jquery et je veux envoyer des données au serveur (l'id de l'cliqué bouton) donc je peux faire la bonne requête et renvoyer la bonne reponse. L'idée est qu'après que je clique sur un bouton, je devrais faire l'appel ajax pour demander une datatable.
Ma fonction jquery ressemble à ceci:
$('button').click(function(){
var dep_id = $(this).attr('id');
var table = $('#dataTable').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url" : '{!! route('workerDepData') !!}' ,
"type" : "POST" ,
"data" : { id: dep_id }
},
columns: [
{ data: 'id', name: 'id' },
{ data: 'worker_name' , name:'name' },
{ data: 'role', name: 'role' },
{ data: 'dep_name' , name:'dep_id'} ,
{ data: 'created_at', name: 'created_at' } ,
{
"className": "details",
"orderable": false,
"data": null,
"defaultContent": '<button class="btn btn-success" id="show">Show</button>' }
]
} );
Mon itinéraire est comme ci-dessous:
Route::post('/dep/fetch/workers' , 'DepsController@fetch_workers')->name('workerDepData');
Mon fetch_workers fonction à l'intérieur du contrôleur a ce code:
public function fetch_workers()
{
$workers = DB::table('workers')
->where('workers.dep_id' , '=' ,request('id'))
->join('departaments' , 'workers.dep_id' , '=' , 'departaments.id')
->select('workers.id' , 'workers.name as worker_name' , 'workers.role' , 'departaments.name as dep_name' , 'workers.created_at')
->get();
$ajaxResponse = Datatables::of($workers)->make(true);
return $ajaxResponse;
}
Après je clique sur le bouton j'obtiens une erreur et quand je vérifie la réponse du serveur en raison de la requête ajax , je vois un fichier json qui ont une exception à
Symfony\Component\HttpKernel\Exception\HttpException.
- Je vérifier pour ce genre d'exception et j'ai vu que c'était dû à un itinéraire à l'aide de get au lieu de post. Ma route comme vous pouvez le voir, c'est à l'aide de post, donc je ne comprends pas pourquoi cette exception.
- vous pouvez poster toute la stacktrace ? vous pouvez le trouver sous l'onglet réseau dans chrome developer tools. ses plus probable d'un jeton CSRF question je dirais
- vous avez eu raison , merci 🙂
- Je suis en train d'écrire une réponse alors 🙂
Vous devez vous connecter pour publier un commentaire.
Comme je l'ai mentionné dans les commentaires. Son CSRF jeton de problème.
Afin de corriger
1) Vous pouvez exclure de votre URI pour CSRF
2) Vous pouvez mettre csrf_token() à votre requête ajax.
Explication détaillée peut être trouvée ici https://laravel.com/docs/5.5/csrf
Vous devez inclure jeton CSRF dans les deux lame de forme et de méthode post.
et passer ensemble avec d'autres données.
amusez-vous 🙂
Laravel: Pour ceux qui sont confrontés avec des csrf problème avec ajax dans laravel
JS:
Dans toutes les dernières version 5.6, vous pouvez l'utiliser comme ceci