Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danluc

Busca Produtos

Recommended Posts

Tenho esse codigo:

$('#busca').keyup(function(){
      var buscaTexto = $(this).val();
      if(buscaTexto.length >= 3){
        $.ajax({
          method: 'post',
          url: '{{ route('site.index.newBusca') }}',
          data: {_token: $('meta[name=csrf-token]').attr('content'), texto: buscaTexto},
          dataType: 'json',
          beforeSend: function() {
            $("#resultado_busca").html("Carregando..."); //Carregando
          },
          success: function(retorno){
            if(retorno.qtd == 0){
              $('#resultado_busca').html('<p>Não encontramos resultados para sua busca</p>');
            }else{
              console.log(retorno);
              $('#resultado_busca').html(retorno.ID);
            }

            //Limpar Status de Carregando
            $("#resultado_busca").html("<a href='#'>"+retorno.dados+"</a>");
            
          }
        });
      }
    });

recebo nessa pagina:

public function newBusca(Request $request){
		$query = $request['texto'];
		if(!$query && $query == '') return Response::json(array(), 400);
		$products = CartProduto::produtos($query, $this->_cnpj);
		$data = array_merge($products);
		$data['qtd'] = count($data);
		foreach ($data as $dado) {
			$dado->dados .= '<a href="#" id="'.$dado->ID.':'.$dado->PRECO.'">'.$dado->ID.'</a>';
		}
		return $data;
	}

ele me retorna esse json:

{"0":{"NOMEFANTASIA":"576 MR, UN, 01 - PRETO FOSCO \/ HASTE INTERNO PRETO PONTEIRA PRETO","dados":"<a href=\"#\" id=\"38802:82.0\">38802<\/a>","PRECO":"82.0","url":"\/representante\/Add-Cart\/38802?cnpj=","ID":"38802","SITUACAO":"1","ALIQUOTA":"5.0"},"1":{"NOMEFANTASIA":"576 MR, UN, 02 - BLACK7 FOSCO \/ HASTE INTERNO BLACK 7 PONTEIRA AZUL ESCURO","dados":"<a href=\"#\" id=\"38803:82.0\">38803<\/a>","PRECO":"82.0","url":"\/representante\/Add-Cart\/38803?cnpj=","ID":"38803","SITUACAO":"1","ALIQUOTA":"5.0"},"2":{"NOMEFANTASIA":"576 MR, UN, 04 - CINZA+AZUL C\/ CRISTAL INTERNO C\/  PONTEIRA PRATA","dados":"<a href=\"#\" id=\"39306:82.0\">39306<\/a>","PRECO":"82.0","url":"\/representante\/Add-Cart\/39306?cnpj=","ID":"39306","SITUACAO":"1","ALIQUOTA":"5.0"},"qtd":3}

só que na minha view (Página não aparece nada).

quando dou um console.log() recebo os resultados, mas no meu html não aparece. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, danluc disse:

 

?

 

Evite 'bump' topics, 'up'. 

 

 

Da um 

console.log($('#resultado_busca'))

Veja onde está o elemento da tela.

Tente 'mockar' os dados.

 

Você mesmo pelo terminal do console: 

 

Chrome:

Ctrl + shift + J

Mozilla:

Ctrl + shift + K

 

 

//console.log(retorno.ID); //Pegar os dados que vem....
$('#resultado_busca').html('INSERIR_MOCKADOS');

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu to certo de que eu já tive esse problema mas não consigo lembrar como eu resolvi :/

 

Faz o que o @gabrieldarezzo falou, testa inserir qualquer conteúdo dentro do seletor e vê se altera. Se não alterar, sugiro tu dar uma limpada na função de sucesso do retorno da consulta ajax e tenta realizar algumas alterações no DOM pra vê se tem algum efeito. Se mesmo assim não rolar, tenta fazer uma requisição assíncrona. Não vi seu código por completo, mas dependendo da forma como você o estruturou, mudar o tipo da requisição pode resolver seu problema, porém, você tem que analisar se essa é a decisão correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobrir em partes, quando coloco assim : 

retorno[0].NOMEFANTASIA

ele me retorna apenas um, como o nome do produto certo.

como faço para ele da um laço aqui:

$('#resultado_busca').html("<a href='#'>"+retorno[i].NOMEFANTASIA+"</a>");

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi assim.

 

              $.each(retorno, function(i, item) {
                //console.log(item.dados);
                $('#resultado_busca').append(item.dados);               
              })

Agradeço a todos que ajudaram.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele me retorna a parti do 3 caractere digitado, certo.

más quando digito 4 ou  mais caracteres, ele vai me trazendo o resultado toda vez, ai fica duplicando, triplicando, quadruplicando  o resultado, como resolver isso tbm?

 

Citar

"tipo, se colocar 2315 quando chega no 231 ele me retorna, ai coloco o 5 ele vai e acrescenta na consulta os mesmo resultado do 231 mais os mesmo de 2135."

 

Segue meu Codigo.:

$(function(){
      $('#busca').keyup(function(){
        var buscaTexto = $(this).val();
        if(buscaTexto.length >= 3){
          $.ajax({
            method: 'post',
            url: '{{ route('site.index.newBusca') }}',
            data: {_token: $('meta[name=csrf-token]').attr('content'), texto: buscaTexto},
            dataType: 'json',
            beforeSend: function() {
              $('#carregando').show();
            },
            success: function(retorno){
              if(retorno.qtd == 0){
                $('#carregando').hide();
                $('#resultado_busca').html('<p>Não encontramos resultados para sua busca</p>');
              }else{
                $.each(retorno, function(i, item) {
                  
                  $('#carregando').hide();
                  console.log(item.dados);
                  $('#resultado_busca').append(item.dados);               
                })
              }
            }
          });
        }
      });

      $('body').on('click', '#resultado_busca a', function(){
        var dadosProduto = $(this).attr('id');
        $.ajax({
          method: 'post',
          url: '{{ route('newCart.addproduto') }}',
          data: {_token: $('meta[name=csrf-token]').attr('content'), produto: dadosProduto, cnpj: '{{ $_GET['cnpj'] }}' },
          dataType: 'json',
          success: function(retorno){
            $('tbody#content_retorno').html(retorno.dados);
          }
        });
      });
    });

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

No console fica assim:

<a href="#" id="29872">2315 MCR, UN, 05 - PRETO C/AZUL TURQUESA</a>
<a href="#" id="29873">2315 MCR, UN, 06 - PRETO COM BEGE</a>
<a href="#" id="29874">2315 MCR, UN, 07 - PRETO COM ROXO</a>
<a href="#" id="32612">2315 MCR, UN, 17 - PRETO C/VERMELHO</a>
<a href="#" id="32614">2315 MCR, UN, 19 - BORDÔ</a>
<a href="#" id="34383">2315 MCR, UN, 21 - PRETO C/ HASTES DEMI</a>
<a href="#" id="36909">2315 MCR, UN, 25 - CAFÉ C/ GOIABA</a>
<a href="#" id="38007">2315 MCR, UN, 26 - ROXO C/ CRISTAL</a>
<a href="#" id="38069">2315 MCR, UN, 27 - BORDÔ DEGRADÊ P/ VERMELHO</a>
<a href="#" id="39142">2315 MCR, UN, 28 - FRENTE BORDO C/ HASTE BEGE</a>
<a href="#" id="39161">2315 MCR, UN, 29 - CRISTAL</a>
<a href="#" id="39163">2315 MCR, UN, 30 - ROSA TRANSP. C/ PRETO TOTAL HASTE ROSA TRANSP.</a>
undefined
<a href="#" id="29872">2315 MCR, UN, 05 - PRETO C/AZUL TURQUESA</a>
<a href="#" id="29873">2315 MCR, UN, 06 - PRETO COM BEGE</a>
<a href="#" id="29874">2315 MCR, UN, 07 - PRETO COM ROXO</a>
<a href="#" id="32612">2315 MCR, UN, 17 - PRETO C/VERMELHO</a>
<a href="#" id="32614">2315 MCR, UN, 19 - BORDÔ</a>
<a href="#" id="34383">2315 MCR, UN, 21 - PRETO C/ HASTES DEMI</a>
<a href="#" id="36909">2315 MCR, UN, 25 - CAFÉ C/ GOIABA</a>
<a href="#" id="38007">2315 MCR, UN, 26 - ROXO C/ CRISTAL</a>
<a href="#" id="38069">2315 MCR, UN, 27 - BORDÔ DEGRADÊ P/ VERMELHO</a>
<a href="#" id="39142">2315 MCR, UN, 28 - FRENTE BORDO C/ HASTE BEGE</a>
<a href="#" id="39161">2315 MCR, UN, 29 - CRISTAL</a>
<a href="#" id="39163">2315 MCR, UN, 30 - ROSA TRANSP. C/ PRETO TOTAL HASTE ROSA TRANSP.</a>
undefined

Sempre que digito mais de quatro caracteres ele duplica. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

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