Ir para conteúdo
Cabrini

percorrendo JSON COM AJAX

Recommended Posts

Ola galera , estou com um probleminha . não consigo encontrar o erro no meu codigo :

mostraDados/request.onreadystatechange

mostra dados que é minha funçao. 

 

 

for (var propriedade in dados) {
                
                    if (typeof dados[propriedade] !== 'object') {
                        for(var i=0; i<dados.length ; i++){
                        var nome = dados.nome;
                         var idade = dados.idade;
                        var profissao = dados.profissao;
                        var esporte = dados.esporte;

                        container.innerHTML += '<td>'+nome + '</td>'+
                                             '<td>'+idade + '</td>'+
                                                '<td>'+profissao + '</td>'+
                                                '<td>'+esporte + '</td>';
                                                
                       no console o erro aponto para  a linha em negrito .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a função map , bem mais simples!

 

container.innerHTML = dados.map(obj => {

    return '<tr>'+
                '<td>'+ obj.nome + '</td>'+
                '<td>'+ obj.idade + '</td>'+
                '<td>'+ obj.profissao + '</td>'+
                '<td>'+ obj.esporte + '</td>'+
            '</tr>';

});


https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://medium.com/poka-techblog/simplify-your-javascript-use-map-reduce-and-filter-bd02c593cc2d

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Soneca_BO
      Boa tarde Pessoal!
       
      Estou a um bom tempo tetando fazer um CRUD em um banco de dados não tradicional e sim do "Cognos tm1",
       
      Estou fazendo uma aplicação WEB e queria usar o Ajax com jquery e javascript(dependendo do caso) para fazer um CRUD
      salvando dados deletando e fazendo as devidas atualizações, mas não estou conseguindo fazer o "PUT" e nem o "DELETE", 
      E não faço ideia de como começar a escrever o código para os métodos informados acima.
       
      Segue código criado para fazer o GET (só conseguir fazer o GET)
      $.ajax({ username: 'admin', password: ' ', url: "http://localhost:8881/api/v1/Cubes('ACO.200.Despesas')/Views('visao')/tm1.Execute?$expand=Cube($select=Name;$expand=Dimensions($select=Name)),Axes($expand=Tuples($expand=Members($select=Name;$expand=Element($select=UniqueName)))),Cells", method: 'POST', headers: { "Authorization": "Basic YWRtaW46", "cache-control": "no-cache", }, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { console.log(data); }, error: function () { alert("erro"); } });  
       
      Obs.: não sou muito bom em rest e estou buscando aprender mais sobre ele, se alguém poder me ajudar agradeceria muito.
       
      Desde já agradeço alguém que conseguir me da uma força.
       
    • Por gsinhorini
      Olá! Bom dia pessoal tudo bem?
      Estou com uma dúvida, estou fazendo um requerimento em Ajax para pegar algumas informações e preencher alguns campos até ai tudo bem. A minha dúvida é o seguinte eu preciso fazer uma validação em um select como eu posso fazer isso.
      Eu criei um variável output que recebe as informações e monta o html, tenho que fazer a validação dentro do output. Vou colocar o código. 
      Muito obrigado pela atenção.
      $('#btn_problema').on('click', function () { var codigo_sac = $(this).attr('data-codigo'); console.log(codigo_sac); $.ajax({ type: "GET", url:'buscarProblema?codigo='+codigo_sac, dataType: "html", async:false, success: function (data) { console.log(data); var dados = JSON.parse(data); output = ""; $('#descricao-problema').val(dados.descricao); $('#Etapa02_codigo_sac').val(dados.codigo_sac); if (dados["debitos"] != null) { $.each(dados.debitos, function (i, item) { if (item.tipo == 1) { output += '<div class="col-md-12"><div class="col-md-2"><div class="form-group text-center"><label class="control-label">Tipo<!-- <span class="required"> * </span> --></label><div class=""><select class="form-control select2me" disabled><option value="">Selecione...</option><option value="1" selected > Débitos </option></select></div></div></div><div class="col-md-3"><div class="form-group text-center"><label class="control-label uppercase">Descrição:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="text" class="form-control text-center" value="'+item.descricao+'" /></div></div></div></div><div class="col-md-3"><div class="form-group text-center"><label class="control-label uppercase">Data:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="date" class="form-control text-center" value="'+item.data+'" /></div></div></div></div><div class="col-md-2"><div class="form-group text-center"><label class="control-label uppercase">Valor:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="text" class="form-control text-center" name="" id="" value="R$ '+item.valor+'" /></div></div></div></div><div class="col-md-2"><div class="form-group text-center"><label class="control-label">Ação<span class="required"> * </span></label><div class=""><select class="form-control select2me acao_debitos" data-codigo="item.codigo"><option value="">Selecione...</option><option value="1"> Sim </option><option value="2"> Não </option></select></div></div></div></div>'; } if (item.tipo == 2) { output += '<div class="col-md-12"><div class="col-md-2"><div class="form-group text-center"><label class="control-label">Tipo<!-- <span class="required"> * </span> --></label><div class=""><select class="form-control select2me" disabled><option value="">Selecione...</option><option value="2" selected > Multa </option></select></div></div></div> <div class="col-md-3"><div class="form-group text-center"><label class="control-label uppercase">Data:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="date" class="form-control text-center" value="'+item.data+'" /></div></div></div></div><div class="col-md-2"><div class="form-group text-center"><label class="control-label uppercase">Valor:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="text" class="form-control text-center" name="" id="" value="'+item.valor+'" /></div></div></div></div><div class="col-md-3"><div class="form-group text-center"><label class="control-label uppercase">AIT:<!-- <span class="required"> * </span> --></label><div class=""><div class=""><input readonly type="text" class="form-control text-center" value="RS'+item.ait+'" /></div></div></div></div><div class="col-md-2"><div class="form-group text-center"><label class="control-label">Aprovação<span class="required"> * </span></label><div class=""><select class="form-control select2me acao_debitos" data-codigo="item.codigo"><option value="">Selecione...</option><option value="1"> Sim </option><option value="2"> Não </option></select></div></div></div></div>'; } $("#problema-debitos").html(output); $("#problema-debitos").trigger('chosen:updated'); }); } } }); });  
    • Por MatheusH
      Olá, alguém pode me ajudar? Fiz um formulário que enviará as informações via ajax no banco de dados. Ocorre tudo bem sem erro, mas não cria nada no banco de dados. 
      Obs: todas a conexão com o banco está certo.
       
      Form.html
      <html> <head> <title> </title> </head> <body> <form id="formulario_ajax"> <label>Nome</label> <input type="text" name="nome"> <label>Cidade</label> <input type="text" name="cidade"> <label>CEP</label> <input type="text" name="cep"> <input type="submit" name="Enviar"> </form> <script src="jquery.js"></script> <script> $('#formulario_ajax').submit(function(e){ e.preventDefaut(); var formulario = $(this); var retorno = inserirDados(formulario) }); function inserirDados(dados){ $.ajax({ type:"POST", data:dados.serialize(), url:"executa.php", async:false }).then(sucesso, falha); function sucesso(data){ console.log(data); } function falha(){ console.log("erro"); } } </script> </body> </html>  
      executa.php
      <?php $server = "localhost"; $login = "root"; $senha = "root"; $db = "formulario"; $conn = mysqli_connect($server, $login, $senha, $db); $nome = $_POST['nome']; $cidade = $_POST['cidade']; $cep = $_POST['cep']; $sql = "INSERT INTO cadastro"; $sql .= "(nome, cidade, cep)"; $sql .= "VALUES"; $sql .= "('$nome', '$cidade', '$sql')"; if(mysqli_query($conn, $sql)){ echo "Inserido com sucesso!"; }else{ echo "Error!"; } mysqli_close($conn); ?>  
      Alguém sabe porque não ta funcionando?ou se tem algum erro no código?
    • Por Bisnaguitos
      Olá, queria saber qual é a melhor forma de armazenar o id vindo da db para usar posteriormente para fazer outra requisição, delete ou put por exemplo. Segue um exemplo:
      A parte do jquery com requisição pelo ajax:
      $("form").on("submit", ()=>{ $.ajax({ type: "DELETE", url: "http://localhost:3000/admin/users", data: {user: >>Aqui eu quero transmitir o valor do id que veio na bd<< } ,success: (data)=>{ console.log("Tudo ok"); } }); }); <tbody> <% for(var i=0; i<data.length;i++){ %> <tr> <th scope="row"><%=i%></th> <td class="user"><%= data[i].user; %></td> <td><%= data[i].password; %></td> <td><i class="fas fa-user-minus"></i>>>Quando clicar neste botão quero transmitir o id ou no caso o user que veio da db mas não sei qual a melhor forma de armazenar o id da row. Não acho muito seguro armezar em algum atributo HTML.</td> </tr> <% } %> <tr> </tbody> E acima pegando os valores pelo ejs.
    • Por Jonas Ribeiro Nascimento
      Ola a todos e agradeço desde já
      Tenha a classe de validação do form onde pega todos os erros do form:
      // Validação final do cadastro public function validateFinalCadastro($arrVar) { if(count($this->getErro())>0){ $arrResponse=[ "retorno"=>"erro", "erros"=>$this->getErro() ]; }else{ $arrResponse=[ "retorno"=>"success", "erros"=>null ]; } return json_encode($arrResponse, JSON_UNESCAPED_UNICODE); } Aqui tenho o Controller que passa para view:
      public function teste() { //echo 'esse é um teste'; $this->recVariaveis(); $validate = new ClassValidate(); $validate->validateFields($_POST); $validate->validateEmail($this->Email); $validate->validateIssetEmail($this->Email); $validate->validateData($this->DataNascimento); $validate->validateCpf($this->Cpf); $validate->validateConfSenha($this->Senha,$this->SenhaConf); $validate->validateStrongSenha($this->Senha); $validate->validateCaptcha($this->gRecaptchaResponse); $validate->validateFinalCadastro($this->arrVar); } Se eu dar um echo, print ou vardump na $validate->validateFinalCadastro($this->arrVar); consigo passar ela pra view e apresentar o erro ...ele apresenta depois do fechamento do html da pagina...
      {"retorno":"erro","erros":["Email já cadastrado!","Utilize uma senha mais forte!","Sistema de segurança foi ativado! Atualize a página e tente novamente ou aguarde mais um pouco."]}
      Aqui esta o ajax sem datatype: 'json'
      Sem datatype: 'json' eu entro no success reponse mais caio no else, porque o response.retorno esta sem o datatype: 'json'.
      $('#FormCadastroClientes').on('submit', function(event){ event.preventDefault(); var dados=$(this).serialize(); console.log(dados); $.ajax({ url: getRoot()+'CadastroClientes/teste', type: 'post', contentType: "application/x-www-form-urlencoded;charset=UTF-8", data: dados, success: function (response) { $('.retornoCad').empty(); if(response.retorno == 'erro'){ getCaptcha(); $.each(response.erros,function(key,value){ $('.retornoCad').append(value+''); }); }else{ $('.retornoCad').append('Dados inseridos com sucesso!'); } }, error: function (response, jqXHR, request, status, errorThrown, erro) { console.log(response); //alert(dados); console.log(dados); //alert(jqXHR); console.log(jqXHR); //alert(request); console.log(request); //alert(status); console.log(status); //alert(errorThrown); console.log(errorThrown); //alert(erro); console.log(erro); }, complete: function (jqXHR, textStatus) { //colocar aqui algo que deseja que faça ao terminar todo o processo (finnaly) } }); Ajax com datatype: 'json' nao consigo entrar no success ele já cai no erro
      $('#FormCadastroClientes').on('submit', function(event){ event.preventDefault(); var dados=$(this).serialize(); console.log(dados); $.ajax({ url: getRoot()+'CadastroClientes/teste', type: 'post', dataType: 'json', data: dados, success: function (response) { $('.retornoCad').empty(); if(response.retorno == 'erro'){ getCaptcha(); $.each(response.erros,function(key,value){ $('.retornoCad').append(value+''); }); }else{ $('.retornoCad').append('Dados inseridos com sucesso!'); } }, error: function (response, jqXHR, request, status, errorThrown, erro) { console.log(response); //alert(dados); console.log(dados); //alert(jqXHR); console.log(jqXHR); //alert(request); console.log(request); //alert(status); console.log(status); //alert(errorThrown); console.log(errorThrown); //alert(erro); console.log(erro); }, complete: function (jqXHR, textStatus) { //colocar aqui algo que deseja que faça ao terminar todo o processo (finnaly) } }); Observações: - Consigo inserir no banco tudo ok. - Consigo apresentar o rertun json_encode direto na view - Consigo entrar no success do ajax sem usar datatype: 'json' não entro no if para ler o array mais entro no else.
      Eu recebo esse erros no console.log
      No response eu teria que receber o return do json_encode e não recebo. O que eu recebo é o html da view.
      O ajax esta esperando um retorno em json e nao o html da pagina.
      parsererror SyntaxError: "JSON.parse: unexpected character at line 1 column 1 of the JSON data"
      Obrigado a todos.....atecipadamente
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.