Autor Tema: Crear una clase en javascript para cargar las peticiones JSON  (Leído 2264 veces)

gatoher

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 86
    • Ver Perfil
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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
    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  ;D, 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?
« Última modificación: 31 de Mayo 2017, 19:32 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Crear una clase en javascript para cargar las peticiones JSON
« Respuesta #1 en: 31 de Mayo 2017, 19:38 »
Buenas, no estoy seguro de lo que puede estar pasando pero veo un diseño de código un tanto extraño. Te recomendaría seguir la forma de diseño y ejemplos que se dan en el curso de Ajax disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=83&Itemid=212

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".