Comunidad de diseño web y desarrollo en internet online

traer información desde ajax -> php hacía el html

Citar            
MensajeEscrito el 03 Jul 2012 03:42 pm
Cordial Saludo,

Estoy tratando de que mi página sea "parametrizable" e intento que algunos tags se completen a través de funciones javascript pero sin resultado alguno.

Explicación:

En la página html tengo el siguiente código:

Código :

<body>      
<div id="divTitulo"> <!--Título-->
    <img src="img/logoemp.jpg" border=1>
    <h1><script>fInfoAplicacion("E")</script></h1>
</div>
</body>


El javascript es el siguiente:

Código :

function fInfoAplicacion(pElemento)
{
   var vEmpresa = "";
   var vAplicacion = "";
   var vVersion = "";
   $.ajax   ({
         type:      "post",
         url:      "cInfo.php",
         data:       null,
         success:    function(vRetorno)
                  {
                     var msgRetorno = jQuery.parseJSON(vRetorno);
                     if(msgRetorno.iEmpresa.length > 0)
                     {
                        vEmpresa = msgRetorno.iEmpresa;
                        vAplicacion = msgRetorno.iAplicacion;
                        vVersion = msgRetorno.iVersion;
                     }
                  },
         error:      function(XMLHttpRequest, textStatus, errorThrown)
                  {
                     alert("Error de Ejecución de Acceso!!!");
                  }
         });
   if(pElemento == "E")
   {
      document.write(vEmpresa);
   }
   if(pElemento == "T")
   {
      document.write(vAplicacion);
   }
   if(pElemento == "V")
   {
      document.write(vVersion);
   }
};   


El problema es que no escribe absolutamente nada, a excepción de:

1. Cambiar esto:

Código :

document.write(vEmpresa);

por esto:

Código :

document.write("Hola");


En este caso coloca en el H1 la palabra "Hola" sin ningún inconveniente, pero no es la idea.

2. Colocar esto:

Código :

alert(vEmpresa);
document.write(vEmpresa);


En este caso muestra un alert vacío y después coloca el valor de la variable perfectamente, pero no se trata de colocar un alert antes de llenarlo.

Gracias por la colaboración prestada.

Por cdrafael

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Jul 2012 07:26 pm
Podrias postear tu PHp para saber como estas generando el Json? creo que no es necesario que pongas el Type y Data si no vas a enviarle nada al url

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Jul 2012 07:28 pm
ya se que puede ser... mira este tutorial a mi me sirvio mucho para trabajar con json y es muy sencillo
http://www.bloogie.es/tecnologia/programacion/34-ajax-con-jquery-php-y-json-ejemplo-paso-a-paso


y lo que creo que te esta faltando ahi es el dataType:'Json' en la estructura del AJAX

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Jul 2012 07:34 pm
Gracias ldgmmorales,

La respuesta al problema es la siguiente:

Ajax es asíncrono, por lo tanto el código JavaScript se ejecuta antes de esperar ala respuesta del Ajax.

Solución:

Código :

function fInfoAplicacion(pElemento)
{
   var vParametros =   {"pElemento":   pElemento};
   var vValor = "";
   oAjax = 
   $.ajax   ({
         async:      false,
         cache:      false,
         type:      "post",
         url:      "cInfo.php",
         data:       vParametros,
         success:    function(vRetorno)
                  {
                     var msgRetorno = jQuery.parseJSON(vRetorno);                     
                     vValor = msgRetorno.iValor;
                     document.write(vValor);
                  },
         error:      function(XMLHttpRequest, textStatus, errorThrown)
                  {
                     alert("Error de Ejecución de Acceso!!!");
                  }
         });      
};


Y este es el php (no modificado):

Código :

<?php
   include 'inf/info.php';
   if(isset($_POST['pElemento']))
   {
      $vElemento = $_POST['pElemento'];
   }
   //Información de la Aplicación
   if($vElemento == 'E')
   {
      $vRetorno = array("iValor" => $iEmpresa, "iStatus" => "ok");
   }
   if($vElemento == 'T')
   {
      $vRetorno = array("iValor" => $iAplicacion, "iStatus" => "ok");
   }
   if($vElemento == 'V')
   {
      $vRetorno = array("iValor" => $iVersion, "iStatus" => "ok");
   }
   if($vElemento == 'N')
   {
      $vRetorno = array("iEmpresa" => $iEmpresa, "iAplicacion" => $iAplicacion, "iVersion" => $iVersion);
   }
   echo json_encode($vRetorno);
?>


Gracias por la colaboración!!!

Por cdrafael

18 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.