Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con objeto Ajax en IE

Estas en el tema de Problema con objeto Ajax en IE en el foro de Frameworks JS en Foros del Web. Buenas tardes a tod@s. Espero que puedan ayudarme, y tengan un poco de tiempo para dedicarme. Me encuentro en proceso de desarrollo de una de ...
  #1 (permalink)  
Antiguo 21/07/2006, 10:51
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 8 meses
Puntos: 10
Problema con objeto Ajax en IE

Buenas tardes a tod@s.

Espero que puedan ayudarme, y tengan un poco de tiempo para dedicarme.

Me encuentro en proceso de desarrollo de una de mis primera Webs con Ajax, y me encuentro con un problema.

Creo, que el problema no es en lo referido a AJAX (httpRequest) sino a un problema de Objetos, el cual, no me doy cuenta y no veo.

Les voy a postear el comienzo de desarrollo de mi librería y posteriormente, les digo qué es lo que me ocurre.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<
html>
<
head>
    <
title>Untitled</title>
    <
script language="JavaScript1.2" type="text/javascript">
    
// "Clase LIB_ajax"
    
function LIB_ajax_object()
    {
        
// variable para el uso del objeto Ajax
        
var ajaxObj null;
        
        
/* *********************************************************** CREACIÓN DEL OBJETO AJAX ***************************************************************** */
    
        // Para Navegadores IE con Javascript 5 o superior (compilación condicional)
        // Los navegadores que no sean Explorer interpretarán todo este código como un comentario
    
        /*@cc_on @*/
        /*@if(@_jscript_version >= 5)
        {
            // Usamos compilación condicional para evitar errores en versiones de Internet Explorer antiguas.
            var ids = ["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
            for(var i=0; !ajaxObj && i<ids.length; i++)
            {
                try
                {
                    ajaxObj = new ActiveXObject(ids[i]);
    //                alert (ajaxObj)
                }
                catch(ex)
                {
                    ajaxObj = false;
                }
            }
        }
        @end @*/
        
        // Para Mozilla, Nescape y Opera
        
if (!ajaxObj && typeof XMLHttpRequest != "undefined")
        {
    
//        alert("creado en FIREFOX, Netscape, Opera");
            
ajaxObj = new XMLHttpRequest();
        }
        
    
//    alert (ajaxObj);
        /* ***************************************************************************************************************************************************** */
    
        // Function to get data from Server
        
ajaxObj.getData = function(data_formatparamparam_valuedestiny_URLmetodtheStatusid_destinywhereCondition)
        {
            
alert("En esta función cogeremos los datos del servidor");
        }
        
        return(
ajaxObj);
    }
    
    
    
//creamos el objeto
    
var LIB_ajax = new LIB_ajax_object();
    
</script>
    
    <script language="JavaScript1.2" type="text/javascript">
        function cogerDatos()
        {
            LIB_ajax.getData();
        }
    </script>
    </head>
    
<body>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td id="head">
        <ul>
            <li><a href="javascript:void(null)" onclick="cogerDatos()" title="Showroom">Showroom</a></li>
            <li><a href="javascript:void(null)" onclick="cogerDatos()" title="Catálogo de Productos"><span class="pres">Catálogo Productos</span></a></li>
            <li><a href="javascript:void(null)" onclick="cogerDatos()" title="Directorio de Empresas">Directorio Empresas</a></li>    
            <li><a href="javascript:void(null)" onclick="cogerDatos()" title="Noticias y Eventos">Noticias y Eventos</a></li>
        </ul>

    </td>
  </tr>
</table>
</body>
</html> 
El código arriba posteado, funciona correctamente en: Firefox, Netscape y Opera (acabo de comprobarlo otra vez).

El problema es Internet Explorer.

Al cargar la página, me da un error de Javascript el cual dice que "El objeto no acepta la propiedad o método", y hace refernecia a la línea de ajaxObj.getData = function (.......

Por favor, ruego que si alguien sabe porqué me está fallando esto, me ayude o me postee lo necesario para hacerlo funcionar.

Me considero un medio-alto programador en Javascript, pero me tiene loco este tema, dado que hace 6 horas que intento solucionarlo, y no lo veo (quizas esté pasando sobre el problema, y de tanto insistir, no me doy cuenta).

Os agradezco vuestra paciencia al leer este post, y más aun os agradeceré la información que me podais dar para seguir trabajando.

Ante todo, muchas gracias.

Un saludo para tod@s.


Última edición por el_javi; 21/07/2006 a las 10:57
  #2 (permalink)  
Antiguo 21/07/2006, 11:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
usa ajaxObj.prototype.getData, la forma en que lo estas haciendo no es la mas correcta, de acuerdo a la documentacion oficial, el prototype es la forma correcta de asignar mas variables o funciones a un objeto X, y aunque si lo puedes llamar asi: ajaxObj.getData(), para definirlo debes de usar el prototype.
  #3 (permalink)  
Antiguo 21/07/2006, 11:16
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 8 meses
Puntos: 10
Hola GatorV

Ante todo, gracias por tu contestación.

Creo que te he entendido, pero me quedan mis dudas, ademas de que lo he probado, y no me funciona

Creo haberte entendido, que a la hora de definir mi función, debo de definirla asi¿?
Código PHP:
        ajaxObj.prototype.getData = function(data_formatparamparam_valuedestiny_URLmetodtheStatusid_destinywhereCondition)
        {
            
alert("En esta función cogeremos los datos del servidor");
        } 
y a la hora de llamarla la puedo llamar así ¿?
Código PHP:
LIB_ajax.getData() 
En IE, y Firefox, me da error.

Te rogaría me lo mirases, y si puedes, uses mi código posteado, a fin de que los dos estemos hablando de lo mismo.

Muchas gracias por dedicarme parte de tu tiempo.

Un saludo, y espero alguna contestación.

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 00:17.