Array
(
)

AJAX Autopreenchimeto input com mysql

PHP
Fabiano
   - 04 mai 2016

Bom dia, gostaria de mais uma vez solicitar ajuda dos vários geek frequentadores deste fórum.

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.
#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
#Código
<?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
}

William (devwilliam)
   - 04 mai 2016

Qual a mensagem e erro no console do navegador?

Quando trabalhamos com requisições AJAX a melhor maneira de encontrar erros é pelo console!

0
|
0

Fabiano
   - 04 mai 2016

Pior que não retorna erro

#Código

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.

0
|
0

Fabiano
   - 04 mai 2016

hum acabou de dar

#Código

TypeError: json is null
	

$uf.val( json.uf_pn );

	

0
|
0

Fabiano
   - 04 mai 2016

TypeError: json is null http://localhost/script/agendar_transportadora.php?id=254 Line 92

0
|
0

William (devwilliam)
   - 04 mai 2016

Verifique seu script PHP, 99,99% dos erros em requisições AJAX estão nos scripts requisitados.

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.

0
|
0

Fabiano
   - 04 mai 2016

#Código

  function( json )
		          {
		          	$uf_pn.val 		( json.uf_pn );
		          	$city_pn.val 	( json.city_pn );
		          });


A linha 92 #Código
 function( json )

0
|
0

Fabiano
   - 04 mai 2016

Estou verificando, o código php, acho que estou cego já, poderia dar uma olhada, caso veja algo seria de muita ajuda.

#Código

<?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
}

?>

0
|
0

Fabiano
   - 26 mai 2016

Bom dia,

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.

0
|
0

William (devwilliam)
   - 26 mai 2016

Obrigado pelo retorno Fabiano, estou finalizando o tópico!

0
|
0