RESOLVIDO::Campo do formulário está com o valor correto mas não aparece na tela

Boa tarde pessoal,

Sou novo por aqui e apanhando um bocado no Scriptcase.

Fiz um formulário que no onchange do campo de cpf ele faz uma busca em uma api.

A api retorna os dados e eu coloco no campo o valor do nome da pessoa.

Quando eu mando dar um echo {nome}, ele retorna o nome correto mas não aparece na tela.

Alguma dica?

Obrigado.

Boa noite,

Podes mostrar aqui como está o teu OnChange do campo CPF?

@Kleyber, esse é o onchange:

$ccp=consultaCPF();
{nome}=$ccp[‘nome’];
sc_set_focus(‘nome’);

Resolvi retornar um array para ver se consigo atualizar os campos.
Eu estava atualizando os campos dentro do método mas não deu certo.
Se eu coloco echo {nome}; o nome aparece corretamente na minha tela mas não no input.

O método PHP consultaCPF está assim:

$cpf=str_replace(’-’,’’,str_replace(’.’,’’,{cpf}));

$query="
select
apc.sKey,
apc.sSecret,
apc.sToken,
apc.sDataHoraToken,
apc.sValidadeToken,
apc.sSolicitadoNovoToken,
apc.sRetemCpf,
apc.sDiasRetencaoCpf,
apc.sUrlToken,
apc.sMetodoToken,
apc.sUrlCpf,
apc.sMetodoCpf
from
apiConfig apc
";

sc_lookup(ds,$query);

if (!{ds}) {
gt_alert_message(“Dados não encontrados, favor verificar os parâmetros.”);
} else {
$sKey={ds[0][0]};
$sSecret={ds[0][1]};
$sToken={ds[0][2]};
$sDataHoraToken={ds[0][3]};
$sValidadeToken={ds[0][4]};
$sSolicitadoNovoToken={ds[0][5]};
$sRetemCpf={ds[0][6]};
$sDiasRetencaoCpf={ds[0][7]};
$basic=base64_encode($sKey.":".$sSecret);
$sUrlToken={ds[0][8]};
$sMetodoToken={ds[0][9]};
$sUrlCpf={ds[0][10]};
$sMetodoCpf={ds[0][11]};
//$sToken=NULL;

if (empty($sToken) or 
    (!empty($sToken) and strtotime($sValidadeToken) < strtotime('now') )
	) {
	
	$retorno=pegaToken($basic, $sMetodoToken, $sUrlToken);
	$srToken=$retorno['access_token'];
    if (!empty($srToken)) {
	  	$sToken=$srToken;
		$sPrazoToken=$retorno['expires_in'];
		$sDataHoraToken=date("Y-m-d H:i:s");
		$sValidadeToken=date("Y-m-d H:i:s", strtotime($sDataHoraToken. '+ '.$sPrazoToken.' seconds'));
	    $query="
		update 
		apiConfig
		set
		sToken='".$sToken."', 
		sDataHoraToken='".$sDataHoraToken."', 
		sValidadeToken='".$sValidadeToken."'";
		
		sc_exec_sql($query);
	}
	
}

if (!empty($sToken)) {

	$rbcRetorno=buscaCPF($sToken, $sUrlCpf, $sMetodoCpf, $cpf);


	$rfbCpf=$rbcRetorno['ni'];
	$rfbNome=$rbcRetorno['nome'];
	$rfbDate=$rbcRetorno['nascimento'];
   	$rfbNascimento=strtotime(substr($rfbDate,4,4)."-".substr($rfbDate,2,2)."-".substr($rfbDate,0,2));
	$rfbNascimento=date('Y-m-d', $rfbNascimento);
	$rfbAnoObito=$rbcRetorno['obito'];
	$rfbSituacao=$rbcRetorno['situacao'];
	$rfbSituacaoCodigo=$rfbSituacao['codigo'];
	$rfbSituacaoDescricao=$rfbSituacao['descricao'];
	
	$teste['nome']=$rfbNome;
	$teste['situacaoCodigo']=$rfbSituacaoCodigo;
	return $teste;
	
	}

}

Qual o tipo de campo Nome?
Está marcado.como desabilitado?

1 Curtida

Bom dia pessoal.
Haroldo, o campo é do tipo texto e não está desabilitado.
Se eu comento a primeira linha e coloco meu nome, ele aparece no campo normalmente.

// $ccp=consultaCPF();
{nome}=“ROGERIO GIFFONI”;
sc_set_focus(‘nome’);

Porém, se eu descomento e se faço um echo na variavel $ccp, ele retorna meu nome normalmente também mas não vai para o campo.

Obrigado.

passa utf8_encode na variável antes de atribuir ao campo.
coloca em modo debug para avaliar o resultado da query direto no banco de dados.

Haroldo, primeiramente obrigado pela ajuda.

Coloquei o utf8_encode mas mesmo assim não funcionou.

Testei jogando o resultado para uma variável em ambos os casos e tanto fixo quanto retornando do método PHP eles retornam a variável normalmente.

Vou chutar aqui, uma vez que não sou tão experiente ainda em ajax e requisições assíincronas.

Será que isso não está relacionado ao tempo de retorno dos dados?

Olha só:
$ccp=consultaCPF();
//print_r($ccp);
{nome}=utf8_encode(“ROGERIO GIFFONI”);
echo {nome};

Retorno no echo:
Output
ROGERIO GIFFONI

mas na tela não aparece o campo nome.

se eu comento essa linha:
//$ccp=consultaCPF();

O nome aparece no input do formulário.

Obrigado.

se consultaCPF(); faz uso de js e ajax pode sim ocorrer isso se vc não se utilizar do sucess no acionamento do ajax.

Só prossegue se houver SUCCESS.

1 Curtida

Não utilizo.
Estou usando o curl duas vezes, uma para buscar o token e outra para para buscar os dados do cpf.
Vou tentar mudar algumas coisas aqui pra ver se dá certo.

Problema resolvido. Não sei dizer ao certo o que aconteceu. O fato é que eu estava recebendo um json da API e estava dando um json_decode($variavel, true) para transformá-la em array e estava usando $variavel[‘nome’] para atualizar o campo nome.
Retirei um true e deixei a variavel vir como um objeto e usei o
{nome}=$variavel->nome e o campo atualizou normalmente.
Obrigado a todos os envolvidos.

3 Curtidas