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

aupa le he añadido más metodos:
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.  
  20.             var b = headers(t.method, t.charset); // set get/post different headers
  21.             petitionConstruct.call(this); // construct get/post different properties
  22.            
  23.             t.beforeReq(); // Method to do before all process
  24.            
  25.             a.open(t.method,t.page,t.async); // open ajax petition
  26.             a.setRequestHeader('Content-Type', b); // set headers ALWAYS after OPEN
  27.             a.onreadystatechange = function() // get petition changestates
  28.             {
  29.                 state(t, a);
  30.             };
  31.             a.send(t.query);    // send get/post query 
  32.         }
  33.     };                 
  34.  
  35.     // public methods to redefine: w3schools.com
  36.     ajax.prototype.beforeReq = function(){}; // method to do before all process
  37.     ajax.prototype.reqSetUp = function(){};  // method to do when The request has been set up
  38.     ajax.prototype.reqSend = function(){};  // method to do when The request has been sent 
  39.     ajax.prototype.reqInProcess = function(){}; // method to do when The request is in process             
  40.     ajax.prototype.reqComplete = function(t){}; // method to do when The request is complete
  41.     ajax.prototype.reqError = function(){}; // method to do when The request return error                  
  42.    
  43.     // private method to set default properties
  44.     var setDefault = function()
  45.     {
  46.         if(!this.method || this.method.toLowerCase()!='get') this.method='post';               
  47.         if(!this.page) this.page=window.location;
  48.         if(!this.async || this.async!=false) this.async=true;                  
  49.         if(!this.charset) this.charset='utf-8';
  50.         if(!this.response || this.response.toLowerCase()!='xml') this.response='txt';                              
  51.         if(!this.query) this.query='';
  52.         if(typeof(this.getSeparator)=='undefined') this.getSeparator='?';
  53.     }; 
  54.    
  55.     // private method to set get/post headers
  56.     var headers = function(m, c)
  57.     {
  58.         var a = '';
  59.         if(m.toLowerCase()=='post')
  60.             a = a + "application/x-www-form-urlencoded;"; // post Header
  61.         a = a + "charset="+c;
  62.         return a;
  63.     };                             
  64.  
  65.     // private method set get/post petition properties
  66.     var petitionConstruct = function()
  67.     {
  68.         // DEFAULT POST example page = index.php and query = a=hello, php -> $_POST['hello']
  69.         if(this.method!='post')// GET example page = index.php?a=hello and query = '', php -> $_GET['hello']
  70.         {
  71.             this.page = this.page+this.getSeparator+this.query;
  72.             this.query = '';
  73.         }
  74.     };
  75.    
  76.     // private method to get ajax petition state
  77.     var state = function(t, a)
  78.     {
  79.         switch(a.readyState)
  80.         {
  81.             case 1: // if readystate is 1 The request has been set up
  82.                 t.reqSetUp();
  83.                 break;
  84.             case 2: // if readystate is 2 The request has been sent
  85.                 t.reqSend();       
  86.                 break;
  87.             case 3: // if readystate is 3 The request is in process
  88.                 t.reqInProcess();          
  89.                 break;
  90.             case 4:  // if readystate is 4 the request is complete
  91.                 if(a.status==200) // if status is 200 petition OK
  92.                 {
  93.                     if (t.response == 'txt') // if get plain text
  94.                         t.reqComplete(a.responseText); // execute complete method                      
  95.                     else // else get XML
  96.                         t.reqComplete(a.responseXML); // execute complete method
  97.                 }
  98.                 else
  99.                     t.reqError(); // if error occurred execute error method            
  100.                 break;
  101.         }
  102.     };
  103.    
  104.     // private method get xmlhttp object
  105.     var xmlhttp = function()
  106.     {
  107.         var a;try{a = new XMLHttpRequest();}
  108.         catch(e){try{a = new ActiveXObject('Msxml2.XMLHTTP');}
  109.         catch(e){try{a = new ActiveXObject('Microsoft.XMLHTTP');}
  110.         catch(e){alert('Your browser doesn\'t support ajax');a=false;}
  111.         }}return a;
  112.     };     
  113. };
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan