Tengo el siguiente código ajax en mi interfaz.
var formData = $('#application-information-step-one').serialize(); var actionUrl = $('#application-information-step-one').attr('action'); $.ajax({ url: actionUrl, type: 'POST', data: formData, success: function(data) { var resp = JSON.stringify(data); console.log(resp); }, error: function(data) { }
Y siguiendo el código para devolver la respuesta json de mi controlador si la solicitud es ajax
:
if ($request->ajax()) { return response()->json([ 'message' => 'Information saved sucessfully !' ],200)->headers('Content-Type', 'application/json'); }
Pero con la configuración del código anterior. Laravel devuelve el código HTML de la misma página desde donde se realizó la solicitud.
La página HTML se representa en la sección de vista previa de la pestaña de red.
¿Alguien puede sugerir lo que me estoy perdiendo aquí?
Devuelve la respuesta JSON del controlador
if ($request->ajax()) { return response()->json([ 'status' => 'success', 'data' =>[], 'message' => 'Information saved successfully!' ], 200); }
En el código de función de éxito de AJAX:
success: function (data) { console.log(data.message); },
y agregue al objeto de solicitud AJAX los siguientes parámetros también
dataType: 'json', contentType: false, processData: false
La verificación de la solicitud de Ajax es incorrecta; de lo contrario, el controlador no habría generado HTML.
Puedes probar varias cosas:
use Illuminate\Support\Facades\Request;
en la parte superior del archivorequest->ajax()
con Request::wantsJson()
request()->ajax()
Cualquiera de los anteriores está sujeto a su versión de Laravel.