Receiving and Manipulating array with ajax

Asked

Viewed 39 times

0

Good evening, I have a very big question. And I search via ajax the treatments of a certain plan, and according to each type of specialty he has to add an html. To see better follow the codes:

Ajax:

          function load_data_tratamentos()
      { 
        $.ajax({
          url:'<?=base_url()?>planos/getTratamentos',
          method:"get",
          dataType:"json",
          success:function(data)
          {
            if(data.tipo_especializacao == 'protese')
            {
              $('#protese_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'ortodontia')
            {
              $('#ortodontia_tratamentos').html(data.dados);
            }  
            if(data.tipo_especializacao == 'implantodontia')
            {
              $('#implantodontia_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'endodontia')
            {
              $('#endodontia_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'clinica')
            {
              $('#clinica_tratamentos').html(data.dados);
            }              
          }
        });
      }

Controler:

public function getTratamentos()
{
    $query = $this->planos_model->getTratamentosByIdPlanos();
    echo json_encode($query);
}

Model:

public function getTratamentosByIdPlanos()
{
    $this->db->select('*');
    $this->db->from('tratamentos');   
    $this->db->order_by('idTratamento', 'ASC');
    $query = $this->db->get();

    $dados['dados'] = '';    
    $dados['tipo_especializacao'] = '';    
    $dados['id_plano'] = '';    

    if($query->num_rows() > 0 )
    {   
        foreach ($query->result() as $tratamento)
        { 

         $plano_usar = $tratamento->plano_usar == "S" ? "checked" : ""; 
         $dados['dados'] .= 
           '<div class="row">
           <input type="hidden" name="tipo_especializacao[]">
           <div class="col-sm-12 mt-3">
           <div class="form-group bmd-form-group">
           <label class="bmd-label-floating">Tratamento</label>
           <input type="text" class="form-control" name="plano_tratamento[]" required="true" aria-required="true" aria-invalid="true" value="'.$tratamento->plano_tratamento.'">
           <input type="hidden" name"idTratamento" value="'.$tratamento->idTratamento.'">
           </div>
           </div>
           <div class="col mt-3">
           <div class="row" style="align-items: center;">
           <div class="col-md-4">
           <div class="form-group bmd-form-group">
           <label class="bmd-label-floating">Valor</label>
           <input type="text" class="form-control" name="plano_tratamento_valor[]" required="true" aria-required="true" aria-invalid="true" value="'.$tratamento->plano_tratamento_valor.'">
           </div>
           </div>
           <div class="col">
           <div class="row justify-content-md-end text-right" style="align-items: center;">
           <div class="togglebutton">
           <label style="color: #000;">
           <input type="checkbox" name="plano_usar[]" '.$plano_usar.'>
           <span class="toggle"></span>
           Usar 
           </label>
           </div>
           <div class="div-actions" style="display: block; margin-left: 1em;">
           <a href="#" rel="tooltip" class="btn btn-dark btn-link">
           <i class="material-icons" style="font-size: 2em">delete</i>
           </a>                                                           
           </div>
           </div>
           </div>  
           </div>  
           </div>
           <hr class="hr-sansiq">                                            
           </div>';
            $dados['tipo_especializacao'] = $tratamento->tipo_especializacao;    
            $dados['id_plano'] = $tratamento->id_plano;
        }        
    }
    else
    {
        $dados['dados'] = '';    
        $dados['tipo_especializacao'] = '';    
        $dados['id_plano'] = ''; 
    }

    return $dados;

}

As you can see, depending on the type of specialty you have to go to a div. But this brings only one kind of specialty.

1 answer

2


$dados['tipo_especializacao'] = $tratamento->tipo_especializacao;

this value is overwritten for each item found in the database and on behalf of the $this->db->order_by('idTratamento', 'ASC'); it will always have the same value. Review this fill strategy.

Taking advantage, all this code

          {
            if(data.tipo_especializacao == 'protese')
            {
              $('#protese_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'ortodontia')
            {
              $('#ortodontia_tratamentos').html(data.dados);
            }  
            if(data.tipo_especializacao == 'implantodontia')
            {
              $('#implantodontia_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'endodontia')
            {
              $('#endodontia_tratamentos').html(data.dados);
            }
            if(data.tipo_especializacao == 'clinica')
            {
              $('#clinica_tratamentos').html(data.dados);
            }              
          }

could be refactored for something like

success:function(data)
          { 
            $('#'+data.tipo_especializacao+'_tratamentos').html(data.dados);  
          }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.