Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Tutorial: Ajax sin iframes ni xmlhttprequest

Estas en el tema de Tutorial: Ajax sin iframes ni xmlhttprequest en el foro de Frameworks JS en Foros del Web. He publicado este tutorial en mi sitio http://leimnud.info y veran un ejemplo funcionando Ajax sin iframes ni xmlhttprequest Intro: He visto en muchos sitios web ...
  #1 (permalink)  
Antiguo 01/09/2006, 15:50
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Tutorial: Ajax sin iframes ni xmlhttprequest

He publicado este tutorial en mi sitio http://leimnud.info y veran un ejemplo funcionando

Ajax sin iframes ni xmlhttprequest


Intro: He visto en muchos sitios web que hacen AJAX con el objeto XMhttpRequest o con iframes pero pocos con este m'etodo, es sencillo r'apido y accesible en cuanto a seguridad aun lo voy investigando.

La idea: Primeramente aclarar que no se como explicar la idea... pero el fin justifica los medios, soy malo explicando pero la idea es esta ..... tener un objeto global llamada AJI la cual se encargara de todo el proceso AJAX, luego cargar un javascript externo con parametros GET:

http://www.algo.com/as.js?a=121212&b=kaskj;


el cual actuar'a como servidor y que soltar'a una variable -> aji.database['nroInstancia'].aji="response Ajax" <- entonces la idea AJAX es tener un controlador que verifique si se ha creado esa variable cada x segundos y si al final se ha creado la variable terminamos el proceso y llamamos a una funcion callback con el valor de la variable -> aji.database['nroInstancia'].aji="response Ajax".

Eso es todo ...ni yo me entend'i pero la idea es esa talvez la entiendan mejor en codigo este es el objeto que he llamado AJI.

Código PHP:
var aji={
    
database:[],
    
nuevo:function(param)
    {
        
_1="ajaxN"+Math.floor(Math.random()*2199);
        
_2=aji.database[_1]=param;
        
_2.name=_1;
        
_2.completed=false;
        
uri=_2.url+"?ajiId="+_2.name+((_2.param)?"&"+_2.param:"");
        
_n document.createElement('script');
        
_n.src uri;
        
_n.type "text/javascript";
        
document.getElementsByTagName("HTML")[0].getElementsByTagName("HEAD")[0].appendChild(_n);
        
_2.script=_n;
        
_2.interval setInterval("aji.verificar('"+_2.name+"')"500);
    },
    
verificar:function(param)
    {
        
_1=aji.database[param];
        if(!
_1.aji)
        {
            
_1.g+=1;
            return;
        }
        else
        {
            
clearInterval(_1.interval);
            
aji.tools.element.remove(_1.script);
            
aji.finish(param);
        }
    },
    
finish:function(param)
    {
        
_1=aji.database[param];
        
_2=_1.callback.funcion.param;
        if(!
_2)
        {
            
_2={};
            
_2.aji=_1.aji;
        }
        else
        {
            
_2.aji=_1.aji;
        }
        
delete aji.database[param];
        
_1.callback.funcion.exec(_2);
    },
    
tools:{
        
element:{
            
remove:function(elemID) {
                
elem = (typeof elemID == "string")?document.getElementById(elemID):elemID;
                if(
elem.parentNode)
                {
                    
elem.parentNode.removeChild(elem);
                }
                else if(
elem.parentElement)
                {
                    
elem.parentElement.removeChild(elem);
                }
            }
        }
    }

Como usarlo: Tan simple como esto:

Código PHP:
ajsa=function()
{
    
aji.nuevo({ 
        
url:"http://wilmer.colosa.net/ajiserver.php"//url del servidor
        
param:"valor1=8&valorN=9"//valores GET
        
callback:{                 //objeto de retorno
            
funcion:{            //funcion de retorno
                
exec:ajsa2,        //nombre de la funcion
                
param:false        //parametros de la funcion de retorno. NOTA:
                                   //Los parametros deben pasarse como un OBJETO LITERAL
                                   //{valor1:12,valorN:"algo"}
            
}
        }
    })

en nuestra funcion callback.
Código PHP:
sjsa2=function(param)
{
/*
Lo que contiene param son los parametros que se pasaron como un  OBJETO LITERAL
param.valor1=algo;
param.valorN=algo;

y se aniade un elemento al objeto:
param.aji : contiene el response de la operacion
*/
alert(aram.aji);

Nuestro Servidor: En el lado del servidor tenemos:
Código PHP:
<?php
$a
=$_GET['ajiId']; //importante contiene el ID de la instancia
$result="Este contenido es generado en una variable JS entonces podemos devolver desde el servidor 
un String, objeto,array,etc."
;
/*
La siguiente linea es importante porque recuerden que devolvemos un
valor javascript y debe ir en una sola linea asi que si devuelven una cadena
con \n o \r deben parsearla para que sea de una sola linea
*/
$result=str_replace("\n","",$result);
?>
/*
Aqui se crea el response;
*/
aji.database['<?=$a;?>'].aji="<?=addslashes($result);?>";
Bueno es hasta donde puedo explicar, el resto del codigo es intuitivo espero que les sirva.


abajo un ejemplo en html funcional

Código:
<script type="text/javascript" src="http://wilmer.colosa.net/aji.js">
</script>
<script type="text/javascript">
ajsa=function()
{
	document.getElementById("aji_container").innerHTML="Loading......";
	aji.nuevo({
		url:"http://wilmer.colosa.net/ajiserver.php",
		param:"k=8&j=9",
		callback:{
			funcion:{
				exec:ajsa2,
				param:false
			}
		}
	})
}
ajsa2=function(param)
{
	document.getElementById("aji_container").innerHTML=param.aji
}
</script>




<a href="#" onClick="ajsa(); return false"> Cargar contenido</a> (<b>aji</b>)<br>
<div id="aji_container" style="border:1px dashed #006699;padding:5px;"></div>
__________________

Maborak Technologies
  #2 (permalink)  
Antiguo 02/09/2006, 05:30
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años, 8 meses
Puntos: 3
Interesante, gracias por el tutorial.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #3 (permalink)  
Antiguo 04/09/2006, 09:01
XrV
 
Fecha de Ingreso: mayo-2003
Mensajes: 10
Antigüedad: 21 años, 6 meses
Puntos: 0
vaya, es una forma estupenda y multiplataforma de cargar datos asincronamente :)

saludos!
Marc
  #4 (permalink)  
Antiguo 07/09/2006, 15:23
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
loading............



ademas que lo v'i mucho mas rapido que un xmlhttprequest o DOM



connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 01/03/2016, 23:21
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Tutorial: Ajax sin iframes ni xmlhttprequest

Jeje hoy en dia se le llama JSONP
  #6 (permalink)  
Antiguo 02/03/2016, 00:35
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Respuesta: Tutorial: Ajax sin iframes ni xmlhttprequest

loading......


Oh que buenos tiempos aquellos donde se inventaban cosas jejeje. Y pensar que ya son mas de 10 anhos.

connection closed.
__________________

Maborak Technologies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:36.