[Python-es] AJAX muy fácil

Juan M. Puertas soft.sirius en gmail.com
Dom Dic 9 22:03:55 CET 2012


 Hola amigos, hoy os envío un código para realizar AJAX de una manera muy
fácil.
 Hace tiempo que vengo buscando lo siguiente:
 Enviar desde un archivo independiente HTML uno o más parámetros en
Javascript hacia una función en un CGI Python, esta función procesa los
parámetros recibidos y los devuelve a la función en javascript.
 La ventaja que tiene esto es que puedes programar javascript aparte del
código en Python, y que el programa en Python, al ser un CGI no tiene que
iniciarse como un demonio cada vez que el computador servidor tenga un
problema.
 Este ejemplo lo he encontrado en Internet, pero lo he modificado para que
haga lo que quiero:

* CLIENTE.HTML:*

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
        <script type="text/javascript">
        <!--
            function Txt(){
                alert(document.getElementById("num").value);
            }

            function onTest( dest ) {
                params = document.getElementById("num").value
                params = 'x=' + params
                var xmlhttp;

                if (window.XMLHttpRequest) {// code for IE7+, Firefox,
Chrome, Opera, Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else {// code for IE6, IE5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }

                xmlhttp.onreadystatechange=function()
                {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                        document.getElementById( "num" ).value =
xmlhttp.responseText;
                    }
                }
                xmlhttp.open("POST",dest,true);

xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                xmlhttp.send( params );
            }

        -->
        </script>
    </head>
    <body>
        <p>
        <input name="Numero" size="12" maxlength="15" value="1" type="text"
id="num"></p>
        <a href="javascript:onTest('cgi-bin/cgi2.py')">Multiplica x 2</a>
<br><br>
        <a href="javascript:Txt()">Mostrar resultado</a>
    </body>
    </html>
____________________________________________________________________________________________
El programa simplemente devuelve el doble del número recibido.
NOTA: He puesto "Mostrar el resultado" para comprobar que realmente se ha
recibido un valor de vuelta,
cosa casi evidente. :-)
____________________________________________________________________________________________

*SERVIDOR PYTHON CGI:*

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-#

import cgitb; cgitb.enable()
import cgi
import os

print "Content-Type: text/html\n"
input_data   = cgi.FieldStorage()
numer        = str(input_data.getvalue( 'x' ) )
x2 = int(numer) * 2
print str(x2)
______________________________________________________________________________________________
 Por supuesto, cliente.html va en la carpeta de documentos del servidor con
permiso 777 y cgi2.py va en la carpeta cgi-bin del servidor con permiso 755.

 Espero que os sirva tanto como a mi.
 Saludos afectuosos. :-)

 Juanma.-
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121209/0ea0c81c/attachment.html>


Más información sobre la lista de distribución Python-es