简体   繁体   中英

check if array it´s empty javascript

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM