Estoy siguiendo un manual de AJAX y es que me han surgido muchas dudas al llegar a la parte mas importante en donde se comienza a trabajar de lleno con AJAX.
Esta es la web: [URL="http://www.librosweb.es/ajax/capitulo7/utilidades_y_objetos_para_ajax.html"]http://www.librosweb.es/ajax/capitulo7/utilidades_y_objetos_para_ajax.html[/URL]
Y este el codigo con el que me eh complicado la vida:
Código Javascript
:
Ver originalvar net = new Object();
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;
// Constructor
net.CargadorContenidos = function(url, funcion, funcionError) {
this.url = url;
this.req = null;
this.onload = funcion;
this.onerror = (funcionError) ? funcionError : this.defaultError;
this.cargaContenidoXML(url);
}
net.CargadorContenidos.prototype = {
cargaContenidoXML: function(url) {
if(window.XMLHttpRequest) {
this.req = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(this.req) {
try {
var loader = this;
this.req.onreadystatechange = function() {
loader.onReadyState.call(loader);
}
this.req.open('GET', url, true);
this.req.send(null);
} catch(err) {
this.onerror.call(this);
}
}
},
onReadyState: function() {
var req = this.req;
var ready = req.readyState;
if(ready == net.READY_STATE_COMPLETE) {
var httpStatus = req.status;
if(httpStatus == 200 || httpStatus == 0) {
this.onload.call(this);
}
else {
this.onerror.call(this);
}
}
},
defaultError: function() {
alert("Se ha producido un error al obtener los datos"
+ "\n\nreadyState:" + this.req.readyState
+ "\nstatus: " + this.req.status
+ "\nheaders: " + this.req.getAllResponseHeaders());
}
}
Ire colocando las partes en las que tengo problema para entender el codigo.
Código Javascript
:
Ver original// Constructor
net.CargadorContenidos = function(url, funcion, funcionError) {
this.url = url;
this.req = null;
this.onload = funcion;
this.onerror = (funcionError) ? funcionError : this.defaultError;
this.cargaContenidoXML(url);
}
net.CargadorContenidos.prototype = {
cargaContenidoXML: function(url) {...}
onReadyState: function() {..}
defaultError: function() {...}
Desde el principio no entiendo bien que es lo que se hace, al principio supuestamente se construye un nuevo objeto pero no hay que poner el nombre con el cual se creara este objeto? Por ej. function cargadorContenido (..){...}
Luego cuando se define cada variable usando this.variable el "this" se a que objeto se refiere? Al objeto net o a cargadorContenidos? Y como se sabe eso? Porque el this se refiere al objeto que lo llama pero hasta ahi cargadorContenidos es una funcion o no?
Bueno, y luego al mismo objeto se le agregan re metodos, y es que me pregunto, no es lo mismo agregarlo cuando definimos anteriormente a cargadorContenido?
Disculpen por tantas preguntas, espero que puedan ayudarme, les estare muy agradecido.