Mi código ajax siempre recibe una respuesta de éxito incluso en caso de error. Estoy usando Laravel 8.2.
Aquí está JavaScript
$(".deleteRecord").click(function(){ var id = $(this).data("id"); var token = $("meta[name='csrf-token']").attr("content"); if(confirm('Do you want to delete?')){ $.ajax( { url: "operDel/"+id, type: 'post', cache: false, data: { "id": id, "method": 'post', "_token": token, }, dataType: "json", success: function() { alert('Record is deleted'); // I getting only this alert }, error: function() { alert('You can not delete this record'); } }); } });Aquí está la ruta
Route::post('operDel/{id}', '\App\Http\Controllers\OperationController@destroy')->name('operDel')->middleware('auth');Aquí está el controlador
public function destroy($id) { $user = User::find($id); if($user->type !== 0) { $user->delete(); return response()->json([ 'success'=>"Record deleted." ]); } else{ return response()->json([ 'error' => "You can not delete this" ]); } }El controlador se ejecuta sin errores, eliminó el registro de la base de datos cuando $usuario-> escriba. == 0. Pero solo obtengo la alerta dentro de la función de éxito. ¿Cómo puedo mostrar el mensaje de respuesta a la alerta?
Debe enviar códigos de respuesta de error para que AJAX considere que una respuesta ha fallado, por ejemplo:
public function destroy($id) { $user = User::find($id); if($user->type !== 0) { $user->delete(); return response()->json([ 'success'=>"Record deleted." ]); } else{ return response()->json([ 'error' => "You can not delete this" ], 400); // 400 means bad request } }Enviar un código de respuesta de más de 400 hará que AJAX comprenda que hubo un error.