Suppression Ajax Laravel 5

Par Alexandre #lbac, il y a 10 ans


Salut à tous,

Je bloque depuis un petit moment sur une tâche relativement simple, mais qui avec Laravel me donne du fil à retordre : la suppression en Ajax.

Apparemment il manquerait un argument à ma méthode destroy() mais je ne vois pas pourquoi :/

Si quelqu'un a une idée je suis preneur :)

Merci à vous !

Controller :

public function destroy(Request $request, $id) { $response = []; $activity = Activity::find($id); if( !$activity ) { $response = [ 'status' => 'error', 'message' => 'Cette publication n\'existe pas', ]; } if( !$this->authorize('destroy', $activity) ) { $response = [ 'status' => 'error', 'message' => 'Vous n\'avez pas l\'autorisation de supprimer cette publication', ]; } if( $activity->delete() ) { $response = [ 'id' => $id, 'status' => 'success', 'message' => 'La publication a été supprimée !', ]; } else { $response = [ 'status' => 'error', 'message' => 'Une erreur est survenue durant la suppression' ]; } if( $request->ajax() ) { return new JsonResponse($response); } else { alert()->{$response['status']}($response['message']); return redirect()->route('front.index'); } }

HTML :

{!! Form::open(['method' => 'DELETE']) !!} <li><a alt="Mettre à jour la publication" title="Mettre à jour la publication" href="#"><i class="fa fa-pencil"></i></a></li> <li> {!! Form::hidden('id', $activity->id) !!} <button type="submit" class="em-danger delete-confirm" alt="Supprimer la publication" title="Supprimer à jour la publication" data-id="{{ $activity->id }}" data-href="{{ route('activity.destroy', ['activity' => $activity->id]) }}"><i class="fa fa-trash"></i></button> </li> {!! Form::close() !!}

JS :

$('.delete-confirm').on('click', function(e) { e.preventDefault(); sweetAlert({ title: 'Confirmation', text: 'Êtes vous sûr de vouloir supprimer cet élément ? Cette action est irréverssible', type: 'warning', showCancelButton: true, confirmButtonColor: "#02c66c", cancelButtonText: 'Non', confirmButtonText: 'Oui', closeOnConfirm: false, closeOnCancel: true, showLoaderOnConfirm: true, }, function() { $.ajax({ url: $(this).attr('data-href'), method: 'DELETE', dataType: 'JSON', data: { '_token': $('input[name="_token"]').val(), 'id': $(this).attr('data-id'), '_method': $('input[name="_method"]').val() }, success: function(data) { if( data.status == 'success' ) { $('#activity_' + data.id).fadeOut(); sweetAlert('Supprimé !', data.message, 'success'); } else { sweetAlert('Oups...', data.message, 'error'); } }, error: function(xhr, message) { sweetAlert('Oups...', 'Une erreur est survenue', 'error'); console.log(xhr); console.log(message); } }); }); });

1 réponse

Alexandre #lbac, il y a 10 ans

Mon soucis venait en fait de mon $(this) qui ne récupérerait pas le bon conteneur... Erreur bête en JS mais c'est bon ^^