How to save selected items on check coming from bank using AJAX, JQuery and C # MVC?

2

I have a form that shows me a list coming from the bank in checkbox form. How can I identify which items in the list have been marked in the save? I carry it like this:

function CarregaSaida() {
    $.ajax({
        url: "/Qualidade/Entidade/CarregaEntidade",
        //data: { representante: representante },
        async: false,
        success: function (data) {
            $("#divSaidas").empty();
            $.each(data, function (i, element) {

            $('#divSaidas').append('<input type="checkbox" name="descricao" id="' + element.Id + '" />' + element.Descricao + '<br/>');

            });

        }
    });
}

html:

<div class="form-group">
   <label class="col-md-2 control-label">Saída</label>
       <div class="col-md-10">
           <div class="mt-checkbox-inline" id="divSaidas"></div>
            <span class="label label-danger" id="errosaida"></span>
        </div>
 </div>

Result:

tosave:

functionPost(){vardados=$("Form").serialize();
//var confirmationValue = null; //Essa variavel é apenas de teste, pra guardar temporariamente o retorno da requisição

      jQuery.ajax({
        type: "POST",
        url: "/Qualidade/Processo/Salvar",
        dataType: "json",
        data: dados,
        success: function(data)
        {    
            //fecha o modal de confimação
            $('#myModal').modal('hide');

            //retorna uma resposta de sucesso NA DIV RESPOSTA            
            $("#resposta").addClass("alert alert-success");     // COLOCA NA CLASSE DE SUCESSO (VERDE)        
            $('#resposta').html('Contato Salvo com sucesso!'); //CRIA A MENSAGEM


        },
        error: function (request, status, erro) {



             },
                 complete: function (jqXHR, textStatus) {
               processo (finnaly)
              }
       });
}

Backend I get like this:

[HttpPost]
        public JsonResult Salvar(Processo u)
        {
            var descricao = u.Descricao;
            Dao.Salvar(descricao);
            return Json("Dados salvo com sucesso!!");
        }
    
asked by anonymous 07.06.2018 / 16:05

3 answers

0
//Mostra a lista de Check
    function CarregaSaida() {
        $.ajax({
            url: "/Qualidade/Entidade/CarregaEntidade",
            //data: { representante: representante },
            async: false,
            success: function (data) {
                $("#divSaidas").empty();
                $.each(data, function (i, element) {

                    $('#divSaidas').append('<input type="checkbox" id="saidas" name="saidas" value="' + element.Id + '" />' + element.Descricao + '<br/>');

                });

            }
        });
    }

//Função que pecorre os checks que estão marcados
    function PegaValuesChecks(name) {
        var checks = document.querySelectorAll("input[name='" + name + "']:checked"),
               i = checks.length,
               arr = [];

        while (i--) {
            arr.push(checks[i].value);
        }

        return arr;
    }
    //Envia pro backend salvar o form
    function Post() {

        //pega os arrays de checkbox selecionados para enviar ao controller
        var entrada = PegaValuesChecks("entrada");
        var saidas = PegaValuesChecks("saidas");
        var materiais = PegaValuesChecks("materiais");
        var metodos = PegaValuesChecks("metodos");
        var medicao = PegaValuesChecks("medicao");
        var pessoais = PegaValuesChecks("pessoais");

        var plan = $("#plan").val();
        var do_ = $("#do").val();
        var check = $("#check").val();
        var action = $("#action").val();


      dados = $("Form").serialize();
        var dados = {        
            entrada: entrada,
            saidas: saidas,
            materiais: materiais,
            metodos: metodos,
            medicao: medicao,
            pessoais:pessoais,
            plan: plan,
            do_: do_,
            check: check,
            action: action
        };
    //var confirmationValue = null; //Essa variavel é apenas de teste, pra guardar temporariamente o retorno da requisição

          jQuery.ajax({
            type: "POST",
            url: "/Qualidade/Processo/Salvar",
            dataType: "json",
            data: dados,
            success: function(data)
            {    
                //fecha o modal de confimação
                $('#myModal').modal('hide');

                //retorna uma resposta de sucesso NA DIV RESPOSTA            
                $("#resposta").addClass("alert alert-success");     // COLOCA NA CLASSE DE SUCESSO (VERDE)        
                $('#resposta').html('Contato Salvo com sucesso!'); //CRIA A MENSAGEM
                $('#resposta').show(); //MOSTRA A DIV DE RESPOSTA

            },
            error: function (request, status, erro) {

                 },
                     complete: function (jqXHR, textStatus) {
                    //colocar aqui algo que deseja que faça ao terminar todo o processo (finnaly)
                  }
           });
    }

Backend:

 [HttpPost]
    public JsonResult Salvar(string[] entradas,string[] saidas,string[] materiais,string[] metodos, string[] medicao,string[] pessoais,string plan, string do_,string check, string action )
    {

     //No DAO do salvar, Fazer um for ou while ou foreach pra pecorrer e inserir na tabela
        Dao.Salvar(entradas,saidas,materiais,metodos, medicao, pessoais,plan, do_,check,action);
        return Json("Dados salvo com sucesso!!");
    }
    
08.06.2018 / 14:19
2

Friend you should loop through all checkboxes:

function getCheckedBoxes(chkboxName) {
  //Primeiro você pega todos os checkboxes
  var checkboxes = document.getElementsByName(chkboxName);
  //Cria um array pra guardar apenas os checados
  var checkboxesChecked = [];
  for (var i=0; i < checkboxes.length; i++) {
     if (checkboxes[i].checked) {
        //Adiciona no array de checados
        checkboxesChecked.push(checkboxes[i]);
     }
  }
  //Retorna os checkboxes marcados, se não existir nenhum ele retorna nulo
  return checkboxesChecked.length > 0 ? checkboxesChecked : null;
}

//Faz a chamada do método passando o atributo "name" dos seus checkboxes
var checkedBoxes = getCheckedBoxes("mycheckboxes");

I hope to have helped friend.

    
07.06.2018 / 16:36
-1

I did a task very similar to yours weeks ago, at the time I had a service checklist table where the user created the checklist attached to the category and another historical_checklist that stored the options that the user selected to categorize that service. Hi, I created a partial view in which I passed the category parameter, I created three lists (one to load all the options as false, one to get the description, the other the ids), at the time of the post I would pass the three lists as parameter to save.

    
11.06.2018 / 02:44