I´m traying to create function to validate my form with jquery by response ajax and laravel backend.
in my backend i have this:
/**
* SEARCH DATA CLIENT FOR CREATE PRECONTRATO
*/
public function searchClient(Request $request)
{
$client = $request->get('documento');
$clientSearch = Cliente::where('CIF_NIF', $client)->get();
if($clientSearch->count() > 0){
return $clientSearch[0];
}
return $clientSearch;
}
this function return client or empty collection if query don´t return any result. My problem it´s that i can´t check this condition.
If i put one data that in my database don´t exists, return this:
[]
No properties
it´s ok don´t exists, but i have that in my success function ajax
and this it´s wrong
I have this in ajax:
$.ajax({
url: "{{ route('admin.precontratos.searchClient') }}",
method: "POST",
data: { "tipo_documento": tipoDocumento, "documento": documento,
"_token": token,
},
success: function(response){
if(response != null || response != "" || response.length > 0 ){
console.log(response.length);
$("#apellido1_titular").hide();
$("#apellido2_titular").hide();
$("#apellido1_titular_label").hide();
$("#apellido2_titular_label").hide();
$("#caducidad_dni").val(changeFormatDate(response.CAMPOCONFC6));
$("#nombre_titular").val(response.NOMBREFISCAL);
if(response.MOVIL != "" || response.MOVIL != null){
$("#tipo_telefono").val('movil');
$("#telefono1").val(response.MOVIL);
}
if(response.TELEFONOS != "" || response.TELEFONOS != null){
$("#tipo_telefono2").val('fijo');
$("#telefono2").val(response.TELEFONOS);
}
$("#email_titular").val(response.E_MAIL);
let date_born = response.CAMPOCONFC5;
$("#fecha_nacimiento").val(changeFormatDate(date_born));
$("#pais_nacimiento").val(response.CAMPOCONFC3);
$("#nacionalidad").val(response.CAMPOCONFC4);
if(response.CAMPOCONFC2 == "UNION LIBRE"){
$("#estado_civil").val('pareja_de_hecho_convivencia');
}
if(response.CAMPOCONFC1 == "FIJO/DISCONTINUO"){
$("#tipo_ocupacion").val("PRIVATE_EMPLOYEE");
$("#ocupacion").val("PERMANENT_SEASONAL");
}
$("#nombre_calle").val(response.DIRECCION);
$("#iban_ccc").val(response.IBAN);
/** VALIDATION INPUTS FILLED */
validateInputsPrecontrato();
}else{
console.log("entro");
}
but always return console.log(response.length);
I need that my function go to else block and never entry there. i don´t know that i´m doing wrong.
Thanks for help and readme
You are using XHR request to your web server. you must accept the response in a proper format, for that your backend code must response a JSON formatted data.
public function searchClient(Request $request) {
$client = $request->get('documento');
$clientSearch = Cliente::where('CIF_NIF', $client)->first();
return $clientSearch
? response()->json([
'status' => 'success',
'content' => $clientSearch
])
: response()json([
'status' => 'error',
'content' => []
]);
}
inside your Ajax success method you can check the response for having the property of status set to success
success: function(response){
if(response.hasOwnProperty('status') && response.status === 'success') {
// Your code logic for success
} else {
// Your code logic for error
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.