Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.traz o resultado assim:
<a href='#'>undefined</a>
No console.log() aparece exatamente o que você espera mas você não consegue imprimir os dados no html?
isso, no console.log() aparece os objetos.
?
>
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');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.
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>");
?Resolvi assim.
$.each(retorno, function(i, item) {
//console.log(item.dados);
$('#resultado_busca').append(item.dados);
})
Agradeço a todos que ajudaram.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);
}
});
});
});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.
Amigo tenta trocar o html por um .text para ver se muda o resultado