Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/12/2008, 16:09
Avatar de ZiTAL
ZiTAL
 
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 9 meses
Puntos: 62
Respuesta: libreria para ajax

Código javascript:
Ver original
  1. var ajax = function()
  2. {
  3.     this.page; // page to request the petition, default: the same page (window.location)
  4.     this.method; // ajax method: post or get, post by default
  5.     this.charset; // charset utf-8 by default
  6.     this.response; // response method, XML or Text, Text by default
  7.     this.query; // GET or POST query separated by & blank for default
  8.     this.async; // ajax connection method, true by default (firefox needs true to work)
  9.     this.getSeparator; // pagename and parameters separator ? by default
  10.    
  11.     // request public method
  12.     ajax.prototype.request = function()
  13.     {              
  14.         var a = new xmlhttp(); // get xmlhttp object
  15.         if(a) // if browser support ajax
  16.         {
  17.             var t = this;
  18.             setDefault.call(this); // set default properties
  19.             var b = headers(t.method, t.charset); // set get/post different headers
  20.             petitionConstruct.call(this); // construct get/post different properties
  21.            
  22.             t.loading(); // Loading method ON
  23.             a.open(t.method,t.page,t.async); // open ajax petition
  24.             a.setRequestHeader('Content-Type', b); // set headers ALWAYS after OPEN
  25.             a.onreadystatechange = function() // get petition changestates
  26.             {
  27.                 state(t, a);
  28.             };
  29.             a.send(t.query);    // send get/post query 
  30.         }
  31.         else
  32.             alert('Your browser doesn\'t support ajax');
  33.     };                 
  34.  
  35.     // public methods to redefine
  36.     ajax.prototype.loading = function(){};     
  37.     ajax.prototype.complete = function(t){};
  38.     ajax.prototype.error = function(){};                       
  39.    
  40.     // private method to set default properties
  41.     var setDefault = function()
  42.     {
  43.         if(!this.method) this.method='post';               
  44.         if(!this.page) this.page=window.location;
  45.         if(!this.async) this.async=true;                   
  46.         if(!this.charset) this.charset='utf-8';
  47.         if(!this.response) this.response='txt';                            
  48.         if(!this.query) this.query='';
  49.         if(!this.getSeparator) this.getSeparator='?';
  50.     }; 
  51.    
  52.     // private method to set get/post headers
  53.     var headers = function(m, c)
  54.     {
  55.         var a = '';
  56.         if(m.toLowerCase()=='post')
  57.             a = a + "application/x-www-form-urlencoded;"; // post Header
  58.         a = a + "charset="+c;
  59.         return a;
  60.     };                             
  61.  
  62.     // private method set get/post petition properties
  63.     var petitionConstruct = function()
  64.     {
  65.         // DEFAULT POST example page = index.php and query = a=hello, php -> $_POST['hello']
  66.         if(this.method!='post')// GET example page = index.php?a=hello and query = '', php -> $_GET['hello']
  67.         {
  68.             this.page = this.page+this.getSeparator+this.query;
  69.             this.query = '';
  70.         }
  71.     };
  72.    
  73.     var state = function(t, a)
  74.     {
  75.         switch(a.readyState)
  76.         {
  77.             case 4: // if changestate is 4 the request is complete
  78.                 if(a.status==200) // if status is 200 petition OK
  79.                 {
  80.                     if(t.response.toLowerCase()=='xml') // if XML response get XML
  81.                         t.complete(a.responseXML);  // execute complete method                     
  82.                     else // else get plain text
  83.                         t.complete(a.responseText); // execute complete method
  84.                 }
  85.                 else
  86.                     t.error(); // if error occurred execute error method
  87.                 break;         
  88.         }  
  89.     };
  90.    
  91.     // private method get xmlhttp object
  92.     var xmlhttp = function()
  93.     {
  94.         var a;try{a = new XMLHttpRequest();}
  95.         catch(e){try{a = new ActiveXObject('Msxml2.XMLHTTP');}
  96.         catch(e){try{a = new ActiveXObject('Microsoft.XMLHTTP');}
  97.         catch(e){a=false;}}}return a;
  98.     };     
  99. };

he cambiado el:
Código javascript:
Ver original
  1. a.onreadystatechange = function() // get petition changestates
y le he añadido dentro una funcion privada para que este un poco mas organizado:
Código javascript:
Ver original
  1. a.onreadystatechange = function() // get petition changestates
  2.     {
  3.         state(t, a);
  4.     };
  5. ...
  6.     var state = function(t, a)
  7.     {
  8.         switch(a.readyState)
  9.         {
  10.             case 4: // if changestate is 4 the request is complete
  11.                 if(a.status==200) // if status is 200 petition OK
  12.                 {
  13.                     if(t.response.toLowerCase()=='xml') // if XML response get XML
  14.                         t.complete(a.responseXML);  // execute complete method                     
  15.                     else // else get plain text
  16.                         t.complete(a.responseText); // execute complete method
  17.                 }
  18.                 else
  19.                     t.error(); // if error occurred execute error method
  20.                 break;         
  21.         }  
  22.     };
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan