Foros del Web » Programando para Internet » Javascript »

AYUDA: Mi script Funciona solo si hay un alert() en cualquier parte

Estas en el tema de AYUDA: Mi script Funciona solo si hay un alert() en cualquier parte en el foro de Javascript en Foros del Web. Hola a todos, soy nuevo posteando, pero soy usuario recurrente del sitio.. mi problema es el siguiente: Tengo una función javascript que llama un archivo ...
  #1 (permalink)  
Antiguo 11/02/2009, 11:29
 
Fecha de Ingreso: febrero-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
AYUDA: Mi script Funciona solo si hay un alert() en cualquier parte

Hola a todos, soy nuevo posteando, pero soy usuario recurrente del sitio.. mi problema es el siguiente:

Tengo una función javascript que llama un archivo PHP (que me devuelve datos XML) para llenar automaticamente un SELECT dependiendo de cual opcion escoja de un SELECT distinto. y funciona perfectamente pero SOLO SI HAY ALGUN alert(); EN EL CODIGO, donde sea que lo ponga... si llama al alert, entonces llena el select, pero si comento el alert entonces nada pasa... es muy raro.. y quiciera que me colaboraran con esto para poder quitar ese alert.. que es muy molesto... gracias

El select que llama a la funcion es este:

Código HTML:
<select size="1" name="v_p_linea" id="v_p_linea"  onchange="CargaDatos('busca_tacon', 'v_p_linea', 'tacon')"> 
la función Javascript es la siguiente:

Código PHP:
function CargaDatos(tipovaloridSelect)
{
    
elValor document.getElementById(valor).value;
    
    
//---
    
var xmlDoc;
    var 
moz = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');
    var 
ie = (typeof window.ActiveXObject != 'undefined');
    if (
moz) {
     
xmlDoc document.implementation.createDocument(""""null)
    } else if (
ie) {
     
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
     
xmlDoc.async false;
     while(
xmlDoc.readyState != 4) {};
    }
     
xmlDoc.load('busca_linea.php?accion='+tipo+'&padre='+elValor);

    
//este es el alert         
    
alert('Se han cargado datos');
    
//---

    
    
    
var results xmlDoc.getElementsByTagName('results');
    var 
datos results[0].getElementsByTagName('rs');
    var 
numDatos results[0].getElementsByTagName('rs').length;
    
    
    for(
i=0;i<numDatos;i++)
    {
        
datos[i].firstChild.nodeValue;
        
datos[i].getAttribute('codigo');
        
document.getElementById(idSelect).options[i+1] = new Option(ab);
    }


como les comento el codigo PHP esta bueno y funciona perfecto, igual que la funcion JS pero esa no hace nada a menos que un alert se ejecute...

gracias...
  #2 (permalink)  
Antiguo 11/02/2009, 18:06
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: AYUDA: Mi script Funciona solo si hay un alert() en cualquier parte

prueba a utilizar esto en vez de while{}

Código:
 
xmlDoc.onreadystatechange=function()
{
if (xmlDoc.readystate==4)
{
xmlDoc.load(...)
}
} 

el bucle while, no deja tiempo para que se cargue el objeto correctamente, por eso funciona cuando pones un alert, ahi recupera el tiempo.

  #3 (permalink)  
Antiguo 12/02/2009, 08:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: AYUDA: Mi script Funciona solo si hay un alert() en cualquier parte

Gracias... la verdad es que no deberia ser el problema porque solo entra al while si es IE, y yo lo pruebo en MOZ y no funciona ... la verdad es que modifique mi Script completamente y ya no tengo el problema...
me quedo:

Código PHP:
function objetoAjax(){
    var 
xmlhttp=false;
    try {
        
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (
e) {
        try {
           
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (
E) {
            
xmlhttp false;
          }
    }

    if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
        
xmlhttp = new XMLHttpRequest();
    }
    return 
xmlhttp;
}

//PARA EL SELECT //
function CargaDatos(tipovaloridSelect)
{        
        var 
elValor document.getElementById(valor).value;
        var 
elLoader 'load_'+idSelect;
        
        var 
miXML 'busca_linea.php?accion='+tipo+'&padre='+elValor;
        
    var 
ajax=new objetoAjax();
      
ajax.open('POST',miXML,true);
      
ajax.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
       
ajax.onreadystatechange=function() 
      {
        if (
ajax.readyState==4)
         {
                        
document.getElementById(elLoader).style.display "none";
            if (
ajax.status==200)
             {
                  
b(ajax.responseXMLidSelect);
             }
         } else 
                 {
                        
document.getElementById(elLoader).style.display "";
                 }
      }
            
            
ajax.send('');
}

function 
b(a,s)
{
    var 
results a.getElementsByTagName('results');
    
results=results.item(0);
    var 
datos results.getElementsByTagName('rs');
    for(
i=0;i<datos.length;i++)
    {
                
aa datos[i].firstChild.nodeValue;
                
bb datos[i].getAttribute('codigo');
                
document.getElementById(s).options[i+1] = new Option(aabb);
    }
        
document.getElementById(s).disabled false;
}
// END SELECT // 
Con este codigo funciona bien en MOZ e IE...

Gracias por el interes...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:59.