AJAX - Problema al implementar AJAX dentro de una clase

 
Vista:

Problema al implementar AJAX dentro de una clase

Publicado por Rafael Chavez (2 intervenciones) el 13/07/2007 03:57:17
Hola, soy nuevo en AJAX y estoy tratando de implementar una clase (objeto) no se como llamarlo en JavaScript para utilizarlo en mis webs sin reescribir el condigo, el problema es que cuando declaro una variable que almacenara el objeto XMLHTTPREQUESTno me reconoce la propiedad ReadyState siendo que si la declaro dentro de la funcion si lo reconioce ademas de que otra de las propiedades si las reconoce, aqui les dejo la parte del codigo y la comento por si es que no me di a entender.

function AJAX(idDiv){
this.content=idDiv; //contiene el nombre del div u objeto q usare para ver la info
this.obj; //el objeto XMLHTTPREQUEST
this.createAjax=nuevoAjax; //CREA UNA INSTANCIA DE XMLHTTPREQUEST
this.openAjax=openAjaxCon ;//abre la conexion AJAX
}
//FUNCION PARA CREAR LA INSTANCIA DE XMLHTTPREQUEST
function nuevoAjax()
{
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;
}

//En esta funcion es donde me genera el error, me dice que this.obj.readyState es nulo o
// no es un objeto, pero si en lugar de usar this.obj solo declaro var obj dentro de la funcion
// si realiza todo muy bien ademas si reconoce el valor de this.content.

function openAjaxCon(method,page,values){
var divs=this.content;
this.obj=this.createAjax();
this.obj.open(method,page,true);
this.obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.obj.onreadystatechange=function()
{
if(this.obj.readyState==1){
......
}

}
if(method=="POST")
this.obj.send(values);
.......
}

De antemano les agradesco su tiempo, mil gracias y espero puedan ayudarme.
Saludos.
Rafael Chavez.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 30
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

RE:Problema al implementar AJAX dentro de una clas

Publicado por Yamil Bracho (184 intervenciones) el 16/07/2007 03:50:01
El problema es que la propiedad readyState es del XmlHttpRequest y no de tu objeto y nunca inicializas obj cuando creas el XmlHttpRequest. Para ello debes colocar dentro del constructor (nuevoAjax), obj = xmlhttp.

Para mi es mas facil que uses alguna biblioteca de funciones como por ejemplo ProtoType o JQuery
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al implementar AJAX dentro de una clas

Publicado por Rafael Chavez solis (2 intervenciones) el 16/07/2007 06:29:26
Muchas gracias por tu ayuda, resolvi el problema de la siguiente manera:
encontre que para declarar una variable privada se declara con la sentencia var dentro del constructor, entonces puedes accesar a ella. asi fue como corregi elproblema, entonces el constructor(nuevoAjax) quedo asi

function AJAX(idDiv){
this.content=idDiv;
var obj=null;
this.createAjax=nuevoAjax; //CREA UNA INSTANCIA DE XMLHTTPREQUEST
this.openAjax=openAjaxCon;//abre la conexion AJAX
this.closeAjax=closeAjaxCon;
}

y acceso a la variable obj de la siguiente manera:

function openAjaxCon(method,page,values){
obj=this.createAjax();
var divs=this.content;
var html;
obj.open(method,page,true);
........
}
Asi si me reconoce la propiedad readyState.

de antemano muchas gracias, el motivo de mi terquedad por hacer esta clase y no usar una biblioteca de funciones como Prototype es para aprender y ver que tan capaz era de hacerlo, al parecer lo logre muy bien y mi clase aunque sencilla quedo bien, muchisimas gracias por su apoyo ..

saludos.
Rafael Chavez solis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al implementar AJAX dentro de una clas

Publicado por Gonzalo (26 intervenciones) el 16/07/2007 08:05:41
Me da la impresión de que utilizas demasiado this en sitios donde en realidad no deberías.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar