Hola a todos, estoy algo atascado con un problema, bueno ya digo que de javascript no estoy muy puesto. Estoy tratando de crear una clase en javascript que reciba dos parámetros, una con una opcion para que luego PHP carge segun la petición unos combos o selects u otros. El segundo parámetro es que archivo PHP va encargarse de ello, esta claro que hay varios.
Bueno mi idea era esa, tener un script en javascript que intanciara una peticion XMLHttpRequest y luego la hiciera y devolviera un objeto JSON con los datos.
Esta clase o script, no he conseguido hacer de verdad una clase javascript
, pero me funciona, pero con una pega. Tengo que poner un alert para que le de tiempo a cargar el objeto JSON.
Os la pongo:
var objCarg;
function ConexionAJAX(archivo, opcion) {
this.crearConexionAJAX = function devuelvoConexionAJAX() {
if(window.XMLHttpRequest){
peticion = new XMLHttpRequest();
}else if (window.ActiveXObject){
peticion= new ActiveXObject('Microsoft.XMLHTTP');
}
peticionCargar = peticion;
peticionCargar.onreadystatechange = cargoDatosConexion;
//Aqui le digo que archivo PHP se va a encargar de trabajar e
peticionCargar.open("POST", "../Controlador/Elementos_AJAX/"+archivo, true);
peticionCargar.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//Dentro de cada archivo hay varios if, dependiendo de la opcion se encarga un metodo o otro
peticionCargar.send(opcion);
function cargoDatosConexion() {
if(this.readyState === READY_STATE_COMPLETE && this.status === 200){
//funciona
try{
objCarg = JSON.parse(peticionCargar.responseText);
} catch(e){
}
}
}
//alert('dddd'); si descomento funciona perfecto
return objCarg;
};
};
Bueno lo llamo asi desde cualquier script:
var conRegistrarse = new ConexionAJAX('cargarElementos.php?"', "opcion=PG");
//Metodo que javascript que carga los options para verlos
cargarGeneroRegistrarse(conRegistrarse.crearConexionAJAX());
delete conRegistrarse;
Sé que el problema esta que cuando creo la instancia el metodo:
peticionCargar.onreadystatechange = cargoDatosConexion;
No tienen tiempo a recuperar los datos, ya que el script no se para a esperarlos
, por eso si descomento el alert devuelve undefined.
A mi me gustaria poder hacer que el metodo principal:
this.crearConexionAJAX = function devuelvoConexionAJAX()
me devolviera el objeto ya cargado JSON, osea return objCarg. Pero se me ha atragantado
.
Supongo que haciendo una clase de verdad se podría solucionar esto. ¿Alguna ayuda?