Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/10/2012, 06:45
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 8 meses
Puntos: 406
Respuesta: Problema con metodo en clases...

Muchas gracias por responder, tal vez estoy mas ofuscado de lo que pienso, pero en verdad me esta sobre escribiendo el metodo/función, verás tengo dos clases Core.js y Session.js, en ambas tengo un metodo llamado "request" que envia una petición Ajax según los parámetros enviados:

Core.js
Código Javascript:
Ver original
  1. var Core = function() {
  2.      //otras propiedades y metodos
  3.  
  4.      request = function(urlAjax,tipo,datosTipo,callback,historial) {
  5.         debug('Ajax: nueva petición del tipo ' + tipo + ' a ' + urlAjax);
  6.         removeDinamicEvents();
  7.  
  8.         var connect = $.ajax({
  9.             url: urlAjax,
  10.             type: tipo,
  11.             cache: false,
  12.             dataType: datosTipo
  13.         });
  14.  
  15.         var responseAjax = null;
  16.  
  17.         ajaxNotification(urlAjax,tipo);
  18.  
  19.         connect.done(function(data) {
  20.             debug('Ajax: respuesta satisfactoria');
  21.  
  22.             debug('Ajax: guardamos la peición como la ultima enviada');
  23.             _ultPeticion = {
  24.                 'urlAjax': urlAjax,
  25.                 'tipo': tipo,
  26.                 'datosTipo': datosTipo,
  27.                 'callback': callback,
  28.                 'historial': historial
  29.             }
  30.  
  31.             if (callback != 'return') {
  32.                 debug('Ajax: enviamos los datos obtenidos a la función callback ' + callback);
  33.                 window[callback].apply(null, [data,urlAjax,historial]);
  34.             }else {
  35.                 debug('Ajax: retornamos los datos');
  36.                 responseAjax = data;
  37.             }
  38.         });
  39.  
  40.         connect.fail(function(jqXHR, error) {
  41.             debug('Ajax: petición fallida, error ' + error);
  42.  
  43.             if (callback != 'return') {
  44.                 debug('Ajax: enviamos los datos obtenidos a la función callback ' + callback);
  45.                 window[callback].apply(this, [jqXHR.responseXML,urlAjax,historial]);
  46.             }else {
  47.                 debug('Ajax: retornamos los datos');
  48.                 responseAjax = data;
  49.             }
  50.         });
  51.     }
  52. }

Session.js
Código Javascript:
Ver original
  1. var Session = function() {
  2.     sessionRequest = function(urlAjax,tipo,callback,vars) {
  3.         debug('Session: nueva petición ajax');
  4.  
  5.         if (typeof vars == 'undefined') {
  6.             var connect = $.ajax({
  7.                 url: urlAjax,
  8.                 type: tipo,
  9.                 cache: false
  10.             });
  11.         }else {
  12.             var connect = $.ajax({
  13.                 url: urlAjax,
  14.                 type: tipo,
  15.                 cache: false,
  16.                 data: vars
  17.             });
  18.         }
  19.  
  20.         var responseData;
  21.  
  22.         connect.done(function(data) {
  23.             debug('Session: petición recibida con exito');
  24.  
  25.             if (callback != 'return') {
  26.                 debug('Session: llamando a la función ' + callback);
  27.                 window[callback].apply(null, [data]);
  28.             }else {
  29.                 debug('Session: guardamos el resultado para retornarlo');
  30.                 responseData = data;
  31.             }
  32.         });
  33.  
  34.         connect.fail(function(jqXHR,error) {
  35.             debug('Session: error al recibir la petición, error ' + error,'warn');
  36.         });
  37.  
  38.         if (typeof responseData != 'undefined') {
  39.             debug('Session: retornamos el valor!');
  40.             return responseData;
  41.         }
  42.     }
  43. }

Ambos metodos son muy parecidos, pero dentro de su ambito no lo son, el problema esta que las llamadas a dicho metodo dentro de cada clase siempre me las envia a la clase que se estancia al final, por lo cual se sobre escribe el primer metodo, al final, "window[callback]" me produce error porque no recibe el nombre de alguna función, si no recibe "tipoDato" (que puede ser XML, JSON, HTML), estoy buscando una solución pero no la encuentro, si te das cuenta, al final para seguir avanzando eh cambiado los nombres de los metodos, pero para mi eso es solo un parche, no una solución real, aun así sigo buscando como evitar este problema...

Gracias por tu tiempo en leer y contestar...

Nota: el metodo debug también se sobre escribe, aunque hay no tengo problema porque el metodo es el mismo en ambas clases...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 31/10/2012 a las 06:50