Data returned in request Ajax + PHP

3

I have this Ajax that takes the return of a PHP script. For this, I gave an "echo" in php and it returned the data. If I want to work with more than one data, will I have to create an ajax for each field? For example: I put the badge in a field and with ajax I find the name of the employee in the field and fill in the input just below. But if you wanted to put the date of admission too, how? Follow AJAX

/**
  * Função para criar um objeto XMLHTTPRequest
  */
 function CriaRequest() {
     try{
         request = new XMLHttpRequest();
     }catch (IEAtual){

         try{
             request = new ActiveXObject("Msxml2.XMLHTTP");
         }catch(IEAntigo){

             try{
                 request = new ActiveXObject("Microsoft.XMLHTTP");
             }catch(falha){
                 request = false;
             }
         }
     }

     if (!request)
         alert("Seu Navegador não suporta Ajax!");
     else
         return request;
 }

 /**
  * Função para enviar os dados
  */
 function getDados() {

     // Declaração de Variáveis
     var nome   = document.getElementById("txtnome").value;
     var result = document.getElementById("content"); //DIV DE RETORNO
     var xmlreq = CriaRequest();

     // Exibe a imagem de progresso
     //result.innerHTML = '<img src="images/Progresso.gif"/>';
     document.getElementById("nomefunc").value = 'Pesquisando...';

     // Iniciar uma requisição
     xmlreq.open("GET", "processa.php?txtnome=" + nome, true);

     // Atribui uma função para ser executada sempre que houver uma mudança de ado
     xmlreq.onreadystatechange = function(){

         // Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
         if (xmlreq.readyState == 4) {

             // Verifica se o arquivo foi encontrado com sucesso
             if (xmlreq.status == 200) {
                 if (xmlreq.responseText == "") {
                 document.getElementById("nomefunc").value = 'NÃO ENCONTRADO!';
                 }else{
                 document.getElementById("nomefunc").value = xmlreq.responseText; //UNICO CAMPO QUE ABASTECE COM O ECHO DA VARIAVEL
                 }
             }else{
                 result.innerHTML = "Erro: " + xmlreq.statusText;
             }
         }
     };
     xmlreq.send(null);
 }

php code

<?php

include 'config.php';

// Recebe variavel do index
    $cracha = $_GET["txtnome"];

//Inicia a consulta ao banco Oracle, com os dados informados pelo cliente.
$consulta2 = OCIParse($ora_conexao,"select
       CRACHA,
       NOME,
       DIA
FROM PCN_CRACHAS
WHERE CRACHA = '$cracha'
ORDER BY 1");

//aqui prepara a consulta, nome da coluna e a variavel retorno da consulta
OCIDefineByName($consulta2,"CRACHA",$v_cracha);
OCIDefineByName($consulta2,"NOME",$v_nome);
OCIDefineByName($consulta2,"DIA",$v_data);
// executa a consulta
OCIExecute($consulta2);

// Atribui o código HTML para montar uma tabela
 while (OCIFetch($consulta2)){
     echo $v_nome;  //Essa retorna no ajax sem problemas
    // echo $v_data; //Se dou echo nessa, o resultado aparece no mesmo campo, junto com o nome
 }

?>
    
asked by anonymous 19.06.2015 / 21:25

1 answer

3

When you use the GET method, the parameters are passed by the URL you have now:

"processa.php?txtnome=" + nome

The part after ? is where you have the data. This extra part ?chave=valor is called querystring and you can join more N data by separating with & . Or if you want to add another parameter you can do something like this:

"processa.php?txtnome=" + nome + '&admissao=' + admissao

On the server side

To pass data to the client side you can do this in PHP:

 // Atribui o código HTML para montar uma tabela
 while (OCIFetch($consulta2)){
     $array = array('nome'=>$v_nome, 'data'=>$v_data, 'cracha'=>$v_cracha);
     echo json_encode($array);
 }

In JavaScript you need to parse this JSON, for example:

var dados = JSON.parse(xmlreq.responseText);
alert(dados.nome);
alert(dados.data);
    
19.06.2015 / 21:28