Comunidad de diseño web y desarrollo en internet online

Texto dinámico>> a veces bien, a veces undefined...

Citar            
MensajeEscrito el 21 Feb 2006 01:25 pm
Hola cristalaber@s, llevo un rato buscando por ahí y no encuentro solución a un problemilla...
Ocurre que estamos desarrollando una página 100% flash a base de cargar un swf externo por sección.
El caso es que en la sección de noticias (y en otras con texto) cuando carga el texto dinámico, a veces lo carga, pero al actualizar a veces sale "undefined", y en otros casos ni siquiera lo carga.... Ayudenme por favor!! si no nos sale esto igual tenemos que desarmar la web y empezarla de cero olvidándonos de hacerla completa en flash.... :crap:

Grazie tante

Por rocenn

182 de clabLevel

1 tutorial

Genero:Masculino  

Zaragoza - España

msie
Citar            
MensajeEscrito el 21 Feb 2006 02:27 pm
Si muestras el código de tu precargador sería más fácil detectar tu problema... Undefined aparece cuando una variable no ha sido inicializada.

Saludos ^^

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 23 Feb 2006 08:23 am
Gracias Maikel, el caso es que él código no lo he creado yo, sino mi compañera de trabajo, que es programadora, y ha usado php. (yo soy un humilde diseñador y hasta ahí no llego)
Lo digo porque me he dado cuenta de que igual debería haber preguntado en otro foro en vez de el de flash. :oops:

De todas maneras dejo el código que usamos:

Código :

_global.cantidad=3
_global.Prod_array = new Array(cantidad); //El texto.
_global.Enla_array = new Array(cantidad); // El enlace.
 
function carga(i)
{
 var c = new LoadVars();
 c.onLoad = function(success:Boolean)
 {
  Prod_array[i] =this["nom"]; 
  Enla_array[i] =this["enl"]; 
  ///pru.htmlText=Prod_array[i];
 }
 c.thisLetter=i;
 c.sendAndLoad("cargar.php",c,"POST");
}

for(i=0;i<3;i++)
{
   carga(i);//Llamo a la funcion cargar.
    clip_i.htmlText=Prod_array[i]; // ME muestra el valor del array.
}
 
 
En el cargar.php
$consulta="select * from noticias";
 
 $idresult=mysql_query($consulta,$link)
  or die('Sentencia Incorrecta');
  
 $i=0;
 while($registro=mysql_fetch_array($idresult))
 {
  $tit[$i]= $registro[titular];
  $enl[$i]= $registro[IDN];
  $i++;
 }
    
 $tab = $_POST['thisLetter'];
 
 $cad=$tit[$tab];
 $enlace=$enl[$tab];
   
  
 ///$rString .= "&ID=2";
 $rString .= "&nom=".$cad;
 $rString .= "&enl=".$enlace;
 echo $rString."&";


Saludos!!

Por rocenn

182 de clabLevel

1 tutorial

Genero:Masculino  

Zaragoza - España

msie
Citar            
MensajeEscrito el 23 Feb 2006 12:22 pm
Hola,

Yo veo varias cosas:

En el inicio estas usando el _global para definir los arrays y luego no lo vuelves a usar.
En Flash _global no es lo mismo que global en otros lenguajes que definen una variable global reconocida en todo el programa. En Flash _global es un contenedor en el que defines variables. Por lo que si defines una _global.variable siempre la tienes que llamar como _global.variable si la llamas como variable la llamas como local.
Para definir variables globales dentro del script para todas las funciones usa: var variable=0
y para definir variables locales usa lo mismo dentro de la función.

La funcion carga es una funcion asincrona, sendandload llama al php pero onLoad se ejecuta cuando le da la gana, por lo tanto
cuando haces esto:

carga(i);//Llamo a la funcion cargar.
clip_i.htmlText=Prod_array[i]; // ME muestra el valor del array.

Es normal que cuando se ejecute la segunda linea aun no se haya ejecutado el onLoad por lo tanto te sale que la variable no esta definida.

Por Arz

14 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Feb 2006 12:36 pm
Yo hago esto de la siguiente manera:

Cargo todos los registros en el LoadVars y asi no tengo que ir llamando cada vez al php lo que hace el flash mucho mas agil.

Para ello dile a tu compañera que el php te devuelva un string de este tipo:

Código :

nom1=nombre1&enl1=enlace1&nom2=nombre2&enl2=enlace2&nom3=nombre3&enl3=enlace3&nom4=nombre4&enl4=enlace4&nom5=nombre5&enl5=enlace5&total=5


No hace falta que definas los arrays, puedes trabajar directamente con el LoadVars, por lo tanto lo defines arriba del todo:
var c = new LoadVars()

La funcion carga seria:

function carga(){
c.onLoad = function(success:Boolean) {
CargaLosCampos()
}
c.sendAndLoad("cargar.php",c,"POST");
}

Cuando se ejecuta el onLoad es decir cuando el servidor devuelve la respuesta se ejecuta la funcion CargaLosCampos que seria:

function CargaLosCampos(){
var n:Number
n=Number(c.total) //coge la variable total del php
for(i=1;i<=n;i++)
clip_i.htmlText=c["nom"+i]; //coge la variable nom1, nom2, etc
}
}

Mas o menos seria esto, probablemente haya algun error ya que no esta probado pero esto tendria que funcionar

Arz

[SWAT] Por favor usar las etiquetas code [/SWAT]

Por Arz

14 de clabLevel



 

msie

 

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