Академический Документы
Профессиональный Документы
Культура Документы
Ver ms
detalles.";
Entendido.
Aprende
Web
Crea y disea tus
sitios en la Web.
Manual de Ajax
Ajax permite mandar y recibir datos de manera asincrona
Y ahora tambien aprende a programar en C++ con Aprende Web C++
AJAX (X)
Enviar datos con POST
GET o POST
GET y POST son las dos formas que tenemos de enviar datos al
servidor.
Hasta ahora hemos usado casi exclusivamente el mtodo GET
para transferir datos al servidor. Si bien este mtodo es el ms sencillo
de usar, tiene un inconveniente: al pasar los datos con la URL stos
pueden mostrarse en la barra del navegador al ser transferidos y
quedan reflejados en el historial del navegador, por lo que pueden ser
vistos por cualquiera que abra la pgina.
Adems el mtodo GET es ms lento. Esto en archivos de pequeo
tamao, como los que estamos usando, no se nota, pero si hay que transferir una gran
cantidad de datos deberemos usar el mtodo POST.
Si queremos hacer un trabajo profesional, donde se guarde la privacidad de los datos, y
la carga de archivos se haga de forma rpida deberemos elegir el mtodo POST.
<title>Ejemplo 9_1</title>
<script type="text/javascript" src="ejemplo9_1.js"></script>
</head>
<body>
<h1>Envio de datos por POST</h1>
......
Hemos cambiado los links a archivos javascript, ya que utilizaremos un nico archivo
que iremos creando. Tambin hemos cambiado la primera lnea del body, para indicar que
utilizamos el mtodo POST. El resto del archivo lo dejamos igual.
Una vez realizados los cambios pulsamos en "guardar como" y guardamos con el
nombre de ejemplo9_1.html. As podemos conservar el original.
Si no habias guardado el archivo de la pgina anterior (ejemplo9.html), puedes copiar el
archivo modificado (ejemplo9_1.html) en el siguiente enlace:
Cdigo de ejemplo9_1.html
archivo javascript
A continuacin creamos el archivo ejemplo9_1.js En el que haremos la transferencia de
datos en ajax con el mtodo POST.
Como la forma de usar el mtodo POST es distinta, no utilizaremos el ObjetoAjax creado
en pginas anteriores, sino que crearemos el cdigo desde el principio. En pginas
posteriores veremos cmo insertar la forma de trabajar con POST en el ObjetoAjax.
Empezamos por crear la funcin que nos devuleve el objeto XMLHttpRequest:
//funcin creacin del objeto XMLHttpRequest.
function creaObjetoAjax () { //Mayora de navegadores
var obj;
if (window.XMLHttpRequest) {
obj=new XMLHttpRequest();
}
else { //para IE 5 y IE 6
obj=new ActiveXObject(Microsoft.XMLHTTP);
}
return obj;
}
enviar()la cual
function enviar() {
//Recoger datos del formulario:
reemail=document.datos.miemail.value; //Email escrito por el usuario
recontra1=document.datos.micontra1.value; //Contrasea primera
recontra2=document.datos.micontra2.value; //Contrasea segunda
//datos para el envio por POST:
misdatos="envioEmail="+reemail+"&envioContra1="+recontra1+"&envioContra2="+recontra2;
//Objeto XMLHttpRequest creado por la funcin.
objetoAjax=creaObjetoAjax();
//Preparar el envio con Open
objetoAjax.open("POST","ejemplo9_1.php",true);
//Enviar cabeceras para que acepte POST:
objetoAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
objetoAjax.setRequestHeader("Content-length", misdatos.length);
objetoAjax.setRequestHeader("Connection", "close");
objetoAjax.onreadystatechange=recogeDatos;
objetoAjax.send(misdatos); //pasar datos como parmetro
}
En color ms oscuro y negrita hemos resaltado el cdigo necesario para enviar los datos
objetoAjax.setRequestHeader("Content-type",
"application/x-www-form-urlencoded"); : Esta cabecera indica el
1.-
tipo de contenido: los datos enviados deben tratarse como los extraidos de un
formulario. Es la ms importante ya que de no ponerla el archivo PHP ignorar los datos.
2.objetoAjax.setRequestHeader("Content-length",
misdatos.length);: Indica el nmero de datos que vamos a transmitir. De ahi
en el segundo parmetro misdatosdebe ser la variable donde se guardan los datos
para enviar.
3.- objetoAjax.setRequestHeader("Connection", "close");:
Cierra la conexion del envio de cabeceras.
Forma de envio : los datos se envian como el primer parmetro del metodo "send":
Con esto completamos el archivo javascript ejemplo9_1.js. Aqu hemos hecho el archivo
en varias partes, pero ste tiene que ir todo seguido. si no tienes claro cmo debe quedar
este archivo puedes ver el cdigo del mismo en el siguiente enlace:
Cdigo de ejemplo9_1.js
Archivo PHP
Si te fijas, el archivo PHP original era ejemplo9.php sin embargo nosotros hemos
mandado los datos al archivo ejemplo9_1.php. Esto quiere decir que el archivo PHP tambin
debemos modificarlo.
En el archivo PHP original los datos se reciban mediante "GET". ahora al modificar la
forma de envo debemos modificar el archivo PHP para que los datos se reciban mediante
POST. Esta es la nica modificacin que hacemos en este archivo y consiste en cambiar las
lneas 4, 5 y 6 del archivo que son las siguientes:
$email=$_GET["envioEmail"]; //recoger datos de email
$contra1=$_GET["envioContra1"]; //recoger datos de contrasea 1
$contra2=$_GET["envioContra2"]; //recoger datos de contrasea 2
Es decir, cambiamos la forma de recoger los datos de GET a POST. Una vez realizado el
cambio pulsamos en "Guardar como" y guardamos el archivo con el nombre de
ejemplo9_1.php.
Para que quede la cosa clara dejamos tambin un enlace en el que podemos ver el
cdigo completo del archivo ejemplo9_1.php:
Cdigo de ejemplo9_1.php
Comprobar el ejemplo
Por ltimo comprobamos que el ejemplo anterior funciona correctamente. si todo ha ido
bien la pgina (ejemplo9_1.html) debe funcionar como la del siguiente enlace:
Ejemplo 9_1.php
.
Aparentemente el envio de datos funciona igual que cuando lo hemos mandado por el
mtodo GET, sin embargo al enviarlo mediante POST podemos guardar la privacidad de los
datos, adems de poder enviar mayor cantidad de datos en menos tiempo.
En pginas anteriores hemos ido construyendo un objeto ObjetoAjax que nos facilita la
tarea de utilizar ajax. En la prxima pgiina aadiremos a este objeto unos mtodos para
poder enviar datos mediante POST.
POST en ObjetoAjax