REFERENCIA: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Método POST
Vamos a realizar algunas modificaciones para que se utilice el método POST al enviar la solicitud ...
var url = "get_data.php";
var params = "lorem=ipsum&name=binny";
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
Algunos encabezados http deben configurarse junto con cualquier solicitud POST. Así que los ponemos en estas líneas ...
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
Con las líneas anteriores, básicamente estamos diciendo que el envío de datos tiene el formato de envío de un formulario. También damos la longitud de los parámetros que estamos enviando.
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
Establecimos un controlador para el evento de cambio de 'estado listo'. Este es el mismo controlador que usamos para el método GET. Puede usar http.responseText aquí: insértelo en un div usando innerHTML (AHAH), eval it (JSON) o cualquier otra cosa.
http.send(params);
Finalmente, enviamos los parámetros con la solicitud. La URL proporcionada se carga solo después de llamar a esta línea. En el método GET, el parámetro será un valor nulo. Pero en el método POST, los datos a enviar se enviarán como argumento de la función de envío. La variable params se declaró en la segunda línea como lorem=ipsum&name=binny
, por lo que enviamos dos parámetros, 'lorem' y 'name' con los valores 'ipsum' y 'binny' respectivamente.