How To: Hacer petición POST con contentType x-www-form-urlencoded


Muchas veces tenemos que hacer peticiones con distintos contentType, como es el caso de x-www-form-urlencoded, para esto la vez pasada se había hecho con $.ajax(…) pero si se había hecho un test se podrá ver que no funciona; gracias a Esteban Ladino (un compañero del trabajo) pude ver la luz para esta situación la cual es hacer uso de XMLHttpRequest, aquí el ejemplo.

var nombre = "Camilo";
var apellido = "Rodriguez";
var xmlhttp = new XMLHttpRequest();
var url = 'http://...com/api/../';
var params = "Nombre=" + nombre + "&Apellido=" + apellido;

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        // Refresh output

    }

    if (xmlhttp.readyState == 4 && xmlhttp.status == 400) {
        // Log
    }
}

xmlhttp.open("POST", url, true);

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