<script>
const ajax = {
/**
* Función que nos inicializa el objeto
* @return object
*/
_x:function () {
if (typeof XMLHttpRequest !== 'undefined') {
return new XMLHttpRequest();
}
let versions = [
"MSXML2.XmlHttp.6.0",
"MSXML2.XmlHttp.5.0",
"MSXML2.XmlHttp.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XmlHttp.2.0",
"Microsoft.XmlHttp"
];
let xhr;
for (let i = 0; i < versions.length; i++) {
try {
xhr = new ActiveXObject(versions[i]);
break;
} catch (e) {
}
}
return xhr;
},
/**
* Funcion que hace el envio AJAX
* @param str url
* @param str callback - nombre de la función a devolver el resultado
* @param str method - [POST|GET]
* @param str data
*/
_send:function (url, callback, method, data) {
let x = this._x();
x.open(method, url, true);
x.onreadystatechange = function() {
// Si el estado de la conexion es completa
if (x.readyState === 4) {
if (x.status >= 400) {
x.showError(x.status);
}
if (x.status === 200) {
callback(x.responseText)
}
}
};
if (method == 'POST') {
x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
x.send(data)
},
/**
* Funcion para hacer una llamada AJAX enviando los datos por GET
* @param str url
* @param str callback - nombre de la función a devolver el resultado
* @param json data
*/
get:function (url, callback, data) {
let query = [];
for (let key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
this._send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null)
},
/** Funcion para hacer una llamada AJAX enviando los datos por POST
* @param str url
* @param str callback - nombre de la función a devolver el resultado
* @param json data
*/
post:function (url, callback, data) {
let query = [];
for (let key in data) {
query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));
}
this._send(url, callback, 'POST', query.join('&'))
}
};
/* Ejemplo del envio de datos por POST*/
ajax.post("x.php", callback, {"a":2});
function callback(e){
console.log(e);
}
</script>
el archivo x.php para este ejemplo, lo único que hace es devolver un json con los valores recibidos, ya sean por GET o POST:
}
}