Introducción a AJAX 101

>> //seccion/ajax/ -- 10 comentario /// Agregado el 2005-09-05 @ Por kaioken

Este es una introduccion a AJAX donde utilizando AJAX y PHP haremos una mini busqueda en una pagina cualquiera sin que esta tenga que hacer reload (refresh o como kieras) y te tire la informacion que deseas en una <div>. Super facil y solo es el inico de lo que podemos hacer con AJAX.

Este es una introduccion a AJAX donde utilizando AJAX y PHP haremos una mini busqueda en una pagina cualquiera sin que esta tenga que hacer reload (refresh o como kieras) y te tire la informacion que deseas en una <div>. Super facil y solo es el inico de lo que podemos hacer con AJAX.

Para los que no saben que es AJAX, solo vayan a la sección y lean la introducción.

Intro


Lo primero que necesitamos es nuestro XmlHttpdRequest; el proposito de este objeto es enviar pedidos (request) al servidor y recibir esos pedidos todo atravez de Javascript. Esto se puede llamar una comunicacion asincronica, donde el web browser siempre sigue asiendo cosas no importa en que estes en la pagina, siempre esta enviando o recibiendo información.

El xhmlHttpdRequest utilizado en este tutorial de http://labreuer...tprequest.aspx, simplemente lo traduje a español.

Por ultimo, no es necesario tener todo el codigo Javascript en la pagina, simplemente lo pueden poner en un archivo .js e incluirlo en el html. También fijense que la página que utilizan para la busqueda es un .html

El JavaScript - XmlHttpdRequest


Codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
//no es php pero es para que se vea mas bonito
<script language="javascript"  type="text/javascript">

//url es el archivo que voy a llamar para correr el script (en pocas palabras contiene mi script php, baka)
var url "google.php?google="

//declaro mi objeto httpdRequest
var http getXmlHttpObject();

/*
Este es nuestro manejador de eventos, lo que hace despues de resivir la info en el metodo sendQueryString

Estado del Objeto:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
*/
function handleHttpResponse()
{
    if (
http.readyState == 4)
    {
        
results http.responseText;
        
//innerHTML es para llenar el div resultado con info, recuerden javascript es casesensitive (una variable a != A)
        
document.getElementById('resultado').innerHTML results;
    }
}

/*
aki es donde mandas el resquest del server de la pagina

Normalmenteo uno querie que el servidor procese la pagina enviada por XmlHttpRquest con objetos diferentes a lo normales.
Esto se hace reconociendo POST Y GET

Este script es asincronico -- sigue corriendo despues de aver enviado un request

lo de send(null) es lo normal todavia no se mas que esto asi que vamos por paso ^_^
*/
function sendQuerystring()
{
    
//cojo el elemento search del textbox
    
searchV document.getElementById("search").value;
    
    
//abre la pagina
    
http.open("GET"url escape(searchV), true);
    
    
//mando la informacion obtenido a la funcion handelHttpResponse
    
http.onreadystatechange handleHttpResponse;
    
    
//send nada
    
http.send(null);
}

/*
esta es la funcion principal, no topar solo copy y past y listo ^_^
*/
function getXmlHttpObject()
{
    var 
xmlhttp;

    
/*@cc_on
    @if (@_jscript_version >= 5)
    try
    {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
    try
    {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
    xmlhttp = false;
    }
    }
    @else
    xmlhttp = false;
    @end @*/

    
if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
    {
        try
        {
            
xmlhttp = new XMLHttpRequest();
        }
        catch (
e)
        {
            
xmlhttp false;
        }
    }

    return 
xmlhttp;
}

</script>
?>


El codigo PHP


Codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
//google.php
//una estupida clase de google para hacer la busqueda
class google 
{
    
    
//para lo que no tienen php5, simplemente quiten el public static y listo
    
public static function searchG($data)
    {
        
$data urlencode(trim($data));
        
$query file('http://www.google.com/search?q='.$data);

        
// el file devuelve un arreglo y pues en la posicion #38 es k comienza a ensenar el resultado
        
return $query[38];
    }

}

//si existe el request de google pagina?google=mctekk entonces enseñame el resultado
if(isset($_GET['google']))
{
    
//busco la funcion estatica searchG en la clase google
    
$google google::searchG($_GET['google']);
    
    
//si me devuele algo entonces imprimelo
    
if((string) $google !== null)
    {
        
//imprime el arreglo
        
print_r($google);
    }
    else
    {
        
//no encontro shit asi que k se va hacer
        
echo '<h4>No se han encontrado resultados.</h4><p>Intentelo de nuevo.</p>';
    }
}
?>


El Html


Codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/*
igual no es php pero para k se ve bonito
En el input si se fijan no tengo ningun submit ni nada, sino k llamo la funcion de javascrip con el onblur y esto es lo que me hace el proceso

luego se fijan que el div tiene un id y este es el que uso para llenar mi resultado de busqueda con el string que me devuelve mi php, ^_^ facil no?
*/
<body>
<
h1>Search Google Ajax Beta 1</h1>
<
form action="post">
  <
p>
  
Search en Google:
  <
input type="text" size="10" name="search" id="search" onblur="sendQuerystring();" />

  </
p>
</
form>
<
div id="resultado">
Null
</div>

</
body>
?>


Todo Junto -- Estructura final


Bueno ya viste todo por parte, ahora el pedazo final.

Codigo:
1
2
3
4
5
6
7
8
9
10
11
<?php
//igual no es php para k se vea bien
<html>
<
head>
//Aki pones el codigo del JAVASCRIPT
</head>
<
body>
//codigo del HTML
</body>
</
html>
?>

User posted image.

El archivo PHP, lo grabas en uno que se llame google.php y listo lo pones en tu servidor y haces una prueba y veras que te despliega el resultado de tu busqueda en la misma pagina luego de haberlo escrito en el textbox.

Descargar Tutorial