AJAX Autopreenchimeto input com mysql
04/05/2016
0
Estou fazendo um formulário e nele gostaria de preencher o nome normalmente e assim que preenchido apos TAB automaticamente preencher os demais campos citados do código.
<!-- Nova Pesquisa --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input[name='cliente']").blur(function(){ var $cod_pn = $("input[name='cod_pn']"); var $doc_pn = $("input[name='doc_cliente']"); $cod_pn.val('Carregando...'); $doc_pn.val('Carregando...'); $.getJSON( 'function.php', { cliente: $( this ).val() }, function( json ) { $cod_pn.val( json.cod_pn ); $doc_pn.val( json.doc_pn ); } ); }); }); </script> <!-- Fim Nova Pesquisa --> <!-- Nova Pesquisa 2 --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("input[name='cliente']").blur(function(){ var $uf = $("input[name='e']"); var $city = $("input[name='c']"); $uf.val ('Carregando...'); $city.val ('Carregando...'); $.getJSON( 'function2.php', { cod_pn: $( this ).val() }, function( json ) { $uf.val( json.uf_pn ); $city.val( json.city_pn ); } ); }); }); </script> <!-- Fim Nova Pesquisa 2 -->
pagina function2.php
<?php /** * função que devolve em formato JSON os dados do cliente */ function retorna( $nome, $db ) { $sql = "SELECT `name_pn`, `city_pn`, `uf_pn`, cod_pn FROM `coh_client_completos` WHERE `cod_pn` = '{$nome}' "; $query = $db->query( $sql ); $arr = Array(); if( $query->num_rows ) { while( $dados = $query->fetch_object() ) { $arr[ 'uf_pn' ] = $dados->uf_pn; $arr[ 'city_pn' ] = $dados->city_pn; } } else $arr['cod_pn'] = 'não encontrado'; return json_encode( $arr ); } /* só se for enviado o parâmetro, que devolve os dados */ if( isset($_GET['cod_pn']) ) { $db = new mysqli('localhost', 'root', '', 'coh_fin'); echo retorna( filter ( $_GET['cliente'] ), $db ); } function filter( $var ){ return $var;//a implementação desta, fica a cargo do leitor }
Fabiano
Posts
04/05/2016
William
Quando trabalhamos com requisições AJAX a melhor maneira de encontrar erros é pelo console!
04/05/2016
Fabiano
GET http://localhost/script/autocompletar.php?term=fabiano 200 OK 16ms jquery-1.10.2.js (linha 8706) 200 OK 15ms jquery.min.js (linha 16) GET http://localhost/script/function2.php?cod_pn=Fabiano+Miranda+dos+Santos+Bordinoski 200 OK 131ms
Fica travado no retornando para os campos estado e cidade.
04/05/2016
Fabiano
TypeError: json is null $uf.val( json.uf_pn );
04/05/2016
William
04/05/2016
Fabiano
04/05/2016
William
Erros em includes, instruções SQL, falta de ";", consulta retorna vazia e etc.
Na maioria das vezes isso retorna "response" vazio, ou seja, sem o formato esperado que no seu caso é JSON.
04/05/2016
Fabiano
function( json ) { $uf_pn.val ( json.uf_pn ); $city_pn.val ( json.city_pn ); });
A linha 92
function( json )
04/05/2016
Fabiano
<?php /** * função que devolve em formato JSON os dados do cliente */ function retorna2( $nome, $db ) { $sql = "SELECT `uf_pn`,`name_pn`,`city_pn` FROM `coh_client_completos` WHERE `name_pn` = '{$nome}' "; $query = $db->query( $sql ); $arr = Array(); if( $query->num_rows ) { while( $dados = $query->fetch_object() ) { $arr[ 'city_pn' ] = $dados->city_pn; $arr[ 'uf_pn' ] = $dados->uf_pn; } } else $arr['name_pn'] = 'não encontrado'; return json_encode( $arr ); } /* só se for enviado o parâmetro, que devolve os dados */ if( isset($_GET['name_pn']) ) { $db = new mysqli('localhost', 'root', '', 'coh_fin'); echo retorna2( filter ( $_GET['name_pn'] ), $db ); } function filter( $var ){ return $var;//a implementação desta, fica a cargo do leitor } ?>
26/05/2016
Fabiano
Problema solucionado com a ajuda do William (Devwilliam), o erro estava na acentuação, com um utf8_encode() nas variáveis $dados->city_pn e $dados->uf_pn o problema foi resolvido.
Muito Obrigado William você é fera.
Clique aqui para fazer login e interagir na Comunidade :)