Estoy tratando de eliminar la fila después de una llamada ajax exitosa. Ajax funciona según lo previsto, pero su función de éxito no funciona. Busqué otras preguntas similares, pero no pude encontrar una solución para mi problema. Intenté depurarlo para verificar si $(this).closest("tr") está configurado correctamente, pero solo logré verificar que no sea nulo. No estoy seguro si el error está en close() o remove().
HTML:
<tbody id="userlist"> @foreach ($users_with_permission as $user) <tr> <td><span>{{ $user['name'] . ' ' . $user['surname'] . '-[' . $user['companies']['name'] . ']-[' . $user['branches']['name'] . ']-[' . $user['departments']['name'] . ']' }} </span></td> <td> <form class="removeUserPermission"> <input type="hidden" name="id" value="{{ $user['id'] }}"> @foreach ($selected_permissions as $permission) <input type="hidden" name="permissions[]" value="{{ $permission }}"> @endforeach <button class="btn btn-danger" type="submit">X</button> </form> </td> </tr> @endforeach </tbody>JS:
$('#userlist').on('submit','.removeUserPermission' ,function(e) { e.preventDefault(); $.ajax({ type: "post", url: "{{ route('role.revokePermission') }}", data: $(this).serialize(), success: function(response) { $(this).closest("tr").remove(); } }); });Pruebe el siguiente código
$('#userlist').on('submit','.removeUserPermission' ,function(e) { e.preventDefault(); var ths = $(this); $.ajax({ type: "post", url: "{{ route('role.revokePermission') }}", data: $(this).serialize(), success: function(response) { ths.parent('tr').remove(); } }); });