Ir para conteúdo

POWERED BY:

Arquivado

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

cmdmss

[Resolvido] Preencher input selecionado de combobox com javascrip

Recommended Posts

Prezados colegas,

 

depois de muitas pesquisas, cheguei ao seguinte codigo.

 

principal.php

 

//Campo dos inputs
                 $(document).ready(function(){
                 $("select[name=Contatos]").change(function(){     
                   var end = $("input[name='end']");  
                    $.getJSON("contatosinfo.php",
                    {Contatos:$(this).val()},
                    function(data){    
                       $.each(data, function(i, obj){
                       $(end).val(obj.a);           
                       })                                                 
                    }
                    )
                    })
              })

 

contatosinfo.php

 

<?
 require_once("../conecta.php");
 $id=$_GET['Contatos'];
 $sql="SELECT * FROM contatos WHERE id = '$id'";
 $qr=mysql_query($sql) or die (mysql_error());

 $x = mysql_fetch_object($qr);

 $ar = array('a'=>1);  

 return json_encode($ar);  
?>

 

Porém, esta retornando NULL para o principal..

 

 

alguém consegue enchergar algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

os dados estão em UTF8 ?

 

jSON é utf8 por padrão. Garanta esse header no php, e um utf8_encode() também talvez seja necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

è... de fato não estava configurado em utf-8...

 

porem fiz todos os acertos necessários... e o erro persiste.

 

No debug esta dando a seguinte mensagem de erro

 

SCRIPT5007: Não é possível obter valor da propriedade 'length': o objeto é nulo ou não definido

jquery-1.7.1.min.js, linha 2 Caractere 11725

 

 

Eis o codigo com as alterações...

 

Principal.php

    //Campo dos inputs
                 $(document).ready(function(){
                 $("select[name=Contatos]").change(function(){     
                   var end = $("input[name='end']");  
                    $.getJSON("contatosinfo.php",
                    {Contatos:$(this).val()},
                    function(data){    
                       $.each(data, function(i, obj){
                       $("input[name='end']").val(obj.teste);
                       $("input[name='bairro']").val(obj.teste2);           
                       });                                         		
                    }
                    );
           		 });

 

contatosinfo.php

 

<?
 require_once("../conecta.php");
 $id=$_GET['Contatos'];
 $sql="SELECT * FROM contatos WHERE id = '$id'";
 $qr=mysql_query($sql) or die (mysql_error());
   $json .= ' ['; 
 while($x = mysql_fetch_assoc($qr)){
   $json.= "{teste: '{$x['Contatos']}', teste2: '{$x['Email']}'}";
 }   

 return utf8_encode($json);  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o json que você está gerando está errado.

 

acesse diretamente, pelo browser:

 

 

contatosinfo.php?Contatos=1

 

 

e veja como está a string. Corrija.

você não tem uma function ne?! então não faz sentido esse return, deveria ser um echo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste direto... aparentemente está gerando certinho..

 

[{teste: 'nome do contato', teste2: 'email do contato'} ]

 

não sei mesmo oq mais pode ser!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você só retorna uma unica linha, você não precisa do while.

 

Faça assim:

 

 

 
   $json = Array();
   $x = mysql_fetch_assoc( $qr );
   $json[] = Array( 'teste'=>utf8_encode( $x['Contatos'] ), 'teste2'=>utf8_encode( $x['Email'] ) );


     echo json_encode( $json );

 

não está aparecendo nenhum erro no console javascript, ne?! [ Ctrl+Shift+J no Firefox ]

Acesse pelo browser e me diga oque retornou dessa minha sugestão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz conforme você falou... mas o mesmo erro no IE continuou aparecendo...

 

SCRIPT5007: Não é possível obter valor da propriedade 'length': o objeto é nulo ou não definido

jquery-1.7.1.min.js, linha 2 Caractere 11725

 

 

Parece que o Jquery está retornando recebendo NULL do arquivo PHP...!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mas como ficou lá acessando pelo browser ?

 

 

você colocou o header utf8 como eu pedi ?

header('Content-Type: text/html; charset=utf-8');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, coloquei o header sim! Mas ainda nada... <_<

 

 

Segue o codigo todo!

 

 

Principal.php

<?php

/**
* @author Caio Marcio
* @copyright 2012
*/
header('Content-Type: text/html; charset=utf-8');
include("../seguranca.php");
//include("../funcoes.php");
include("../func.php");
protegePagina();

$idUser = $_GET["idUser"];
$user = desc_user($idUser);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <head>        

       <script language="JavaScript" src="../js_cssFiles/dataehora.js"></script>        
       <link rel="stylesheet" href="../js_cssFiles/menu.css" />
       <link rel="stylesheet" href="../js_cssFiles/stylePrincipal.css" />
       <title>Sistema de Gerenciamento Vitek</title>

       <script type="text/javascript" src="../js_cssFiles/jquery-1.7.1.min.js"></script>
            <script type="text/javascript">
            //Campo select da Empresa
              $(document).ready(function(){							
                 $("select[name=Empresas]").change(function(){
                  $("select[name=Unidades]").html('<option value="0">Carregando...</option>');	   
           	    $.post("unidades.php",
                    {Empresas:$(this).val()},
                    function(valor){
                       $("select[name=Contatos]").html("<option>Selecione...</option>");
                       $("select[name=Unidades]").html("<option>Selecione...</option>" + valor);
                    }
                    )		  
                 })       
              })
              	//Campo select das unidades
                 $(document).ready(function(){
                 $("select[name=Unidades]").change(function(){
                  $("select[name=Contatos]").html('<option value="0">Carregando...</option>');
                    $.post("contatos.php",
                    {Unidades:$(this).val()},
                    function(valor){
                       $("select[name=Contatos]").html("<option>Selecione...</option>" + valor);    		
                    }
                    )
           		 })
              })
              //Campo dos inputs
                 $(document).ready(function(){
                 $("select[name=Contatos]").change(function(){     
                   var end = $("input[name='end']");  
                    $.getJSON("contatosinfo.php",
                    {Contatos:$(this).val()},
                    function(data){    
                       $.each(data, function(i, obj){
                       $("input[name='end']").val(obj.teste);
                       $("input[name='bairro']").val(obj.teste2);           
                       });                                         		
                    }
                    );
           		 });
              })
        </script>        
   </head>
   <body bgcolor="#E9E9E9" onload="startclock()">        

       <br /><br />
   <table border="0" width="1000px" class="tabelafloat">
           <tr><td></td><td align="left"><font size="2">Olá <?echo $user?>, em que posso lhe ser útil hoje?</font></td><td align="right"><form name="clock" onsubmit="0"><div><script>datahj();</script> -<input style="background-color: #E9E9E9;border:none;font-size: 12px;" type="button" value="" name="face" /></div></form></td></tr>

           <tr>
           <td valign="top">
               <div id="menu">
               <? echo menu($idUser);?>
               </div>
           </td>
               <td colspan="3">
                   <div id="apDiv1">
                       <table width="100%" border="0">
                           <tr><td colspan="3"><b><i><u><font size="4">Clientes</font></u></i></b><hr /></td></tr>
                           <tr align="center"><td><select name="Empresas"><option>Selecione uma empresa...</option><? mostraEmpresas(); ?></select></td><td><select name="Unidades"><option>Selecione uma unidade...</option></select></td><td><select name="Contatos"><option>Selecione um contato...</option></select></td></tr>
                           <tr><td colspan="3"><hr /></td></tr>
                           <tr><td colspan="3" bgcolor="#FFFFC4" align="center">DADOS DA EMPRESA / UNIDADE</td></tr>
                           <tr><td> </td></tr>             
                           <tr><td>Endereço / Número:</td><td colspan="3"><input type="text" name="end" size="50" readonly="on" /></td></tr>
                           <tr><td>Bairro:</td><td colspan="3"><input type="text" name="bairro" size="50" /></td></tr>
                           <tr><td>Cidade / Estado:</td><td colspan="3"><input type="text" name="cidadeestado" size="50" /></td></tr>
                           <tr><td>CEP:</td><td colspan="3"><input type="text" name="cep" size="50" /></td></tr>
                           <tr><td>CNPJ:</td><td colspan="3"><input type="text" name="cnpj" size="50" /></td></tr>
                           <tr><td>IE:</td><td colspan="3"><input type="text" name="ie" size="50" /></td></tr>
                           <tr><td colspan="3"><hr /></td></tr>
                           <tr><td colspan="3" bgcolor="#FFFFC4" align="center">DADOS DO CONTATO</td></tr>
                           <tr><td> </td></tr>
                           <tr><td>E-mail:</td><td colspan="3"><input type="text" name="email" size="50" /></td></tr>
                           <tr><td>Telefone / Celular:</td><td colspan="3"><input type="text" name="telcel" size="50" /></td></tr>
                           <tr><td>Fax:</td><td colspan="3"><input type="text" name="fax" size="50" /></td></tr>
                           <tr><td>Departamento:</td><td colspan="3"><input type="text" name="dep" size="50" /></td></tr>
                           <tr><td>Cargo:</td><td colspan="3"><input type="text" name="cargo" size="50" /></td></tr>
                           <tr><td colspan="3"><hr /></td></tr>                            
                       </table>
                   </div>
               </td>
           </tr>
           <tr><td></td><td><? echo "<font color=\"black\" size=\"2\">"; versao(); ?></font></td><td align="right" colspan="2"><font color="black" size="2">© <? echo date('Y') ?> - Vitek Consultoria Ltda. | Todos os direitos reservados.</font></td></tr>
    </table>   
   </body>
</html>

 

contatosinfo.php

 

<?
   header('Content-Type: text/html; charset=utf-8');
 require_once("../conecta.php");
 $id=$_GET['Contatos'];
 $sql="SELECT * FROM contatos WHERE id = '$id'";
 $qr=mysql_query($sql) or die (mysql_error());
   //$json .= ' ['; 
 while($x = mysql_fetch_assoc($qr)){
   $json[]=Array('teste'=>utf8_encode($x['Contatos']), 'teste2'=>utf8_encode($x['Email']));
 }   

 return json_encode($json);
 //return $json;  
?>

 

HELP!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu falei lá em cima..

return json_encode($json);

 

não faz sentido esse return ai, tem que ser um ECHO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, eu fiz exactamente da maneira que vocês fizeram e não consigo por a funcionar para as INPUT, que estarei eu a fazer mal??

 

 

    $(document).ready(function(){
      // Evento change no campo MARCA 
$("select[name=marca]").change(function(){
            // Exibimos no campo modelo antes de concluirmos
$("select[name=modelo]").html('<option value="">Carregando...</option>');
            // Passando marca por parametro para a pagina ajax-modelo.php
            $.post("ajax-modelo.php",
                  {marca:$(this).val()},
                  // Carregamos o resultado acima para o campo modelo
 function(valor){
                     $("select[name=modelo]").html(valor);
                  })
         })
})//FECHA $document
    $(document).ready(function(){
      //Campo dos inputs
 $("select[name=modelo]").change(function(){     
var end = $("input[name='saida']");  
$.getJSON("ajax.input.php",
{modelo:$(this).val()},
function(data){    
$.each(data, function(i, obj){
$("input[name='saida']").val(obj.teste);
});                                          
});
 });
})//FECHA $document
 

 

 

  <form action="" method="post" id="auto">
    <select name="marca">
      <option value="0">Escolher marca</option>
 <?php
        mysql_connect('localhost','root') or die ('Falhou conexão ao servidor');
        mysql_select_db('dbgeral') or die ('Falhou conexão à base de dados');
         
        $sql = "SELECT nipc, desig_empresa As nome FROM ger_cliente ORDER BY nipc ASC";
        $qr = mysql_query($sql) or die(mysql_error());
        while($ln = mysql_fetch_assoc($qr)){
          echo '<option value="'.$ln['nipc'].'">'.$ln['nipc']." - ".utf8_encode($ln['nome']).'</option>';
          }
      ?>
    </select>
    <select name="modelo">
      <option value="0" selected="selected">Aguardando marca...</option>
    </select>
    <input type="text" id="saida" name="saida"/>
 
</form>
 
ajax-modelo.php

<?php
  mysql_connect('localhost','root') or die ('Falhou conexão ao servidor');
  mysql_select_db('dbgeral') or die ('Falhou conexão à base de dados');
 
  $cb_2 = $_POST['marca'];
 
  $qr = mysql_query("(SELECT 'Cônjuge' as tipo, desig_nif2 As nome, nif2 As nipc FROM ger_cliente 
 WHERE nif2 = ".$cb_2.")") or die(mysql_error());
  if(mysql_num_rows($qr) == 0){
echo '<option value="0">'.htmlentities('Aguardando marca...').'</option>'; }
  else
    {
 echo '<option value="0">Selecione modelo...</option>';
      while($ln = mysql_fetch_assoc($qr)){ 
   echo '<option value="'.$ln['nipc'].'">'.utf8_encode($ln['nome']).'</option>'; }
    }
?>

ajax.input.php

<?php
  header('Content-Type: text/html; charset=utf-8');
  mysql_connect('localhost','root') or die ('Falhou conexão ao servidor');
  mysql_select_db('dbgeral') or die ('Falhou conexão à base de dados');
  $cb_3 = $_POST['modelo'];
  
  $qr = mysql_query("(SELECT 'Cônjuge' as tipo, desig_nif2 As nome, nif2 As nipc FROM ger_cliente 
 WHERE nif2 = ".$cb_3.")") or die(mysql_error());
 
  $json = Array();
    $x = mysql_fetch_assoc( $qr );
    $json[] = Array( 'teste'=>utf8_encode( $x['nipc'] ));
  echo json_encode($json);
 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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