This repository has been archived by the owner on Mar 16, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAsynjax.es.min.js
10 lines (10 loc) · 8.72 KB
/
Asynjax.es.min.js
1
2
3
4
5
6
7
8
9
10
/*!
*
* Asynjax - Asíncrono Ajax sin jQuery
* Copyright (c) 2018 JeiHO (https://github.com/jeijei4/Asynjax)
* Licensed under MIT (http://www.opensource.org/licenses/mit-license.php)
*
* Version: 2.0.0
*
*/
var asynjax={contains:function(e,r){return new RegExp(r.toLowerCase(),"g").test(e.toLowerCase())},httpRequest:function(){"use strict";if(window.XMLHttpRequest)return new XMLHttpRequest;const e=["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp.2.0","Microsoft.XmlHttp"];let r;for(let a=0;a<e.length;a++)try{r=new ActiveXObject(e[a]);break}catch(e){}return r},param:function(e,r){var a,o=[];for(a in e)if(e.hasOwnProperty(a)&&e[a]){var t=r?r+"["+a+"]":a,n=e[a];o.push(null!==n&&"object"==typeof n?asynjax.param(n,t):encodeURIComponent(t)+"="+encodeURIComponent(n))}return o.join("&")},getFormData:function(e){let r={};try{e.forEach(function(e,a){r[a]=e})}catch(e){throw r={},new Error(e.message)}return r},getForm:function(e,r){let a={};try{const d=e.querySelectorAll('input:not([type="radio"]):not([type="checkbox"]), input[type="checkbox"]:checked, input[type="radio"]:checked, select, textarea'),l=d.length;for(let e=0;e<l;++e){const l=d[e],u=d[e].tagName.toLowerCase();var o=l.name;const p=l.value;if(o)if("select"===u&&!0===l.multiple){var t,n=[],i=0;const e=l.options.length;for(t=0;t<e;++t)l.options[t].selected&&(n[i]=l.options[t].value,++i);if(0===r.length||!1===asynjax.contains(l.className,r)){const e=n.length;var s="";for(k=0;k<e;++k)""!==s&&(s+=","),"string"==typeof n[k]?s+='"'+n[k]+'"':s+=n[k];const r='"'+o+'":['+s+"]";var c=JSON.stringify(a);a="{}"===c?JSON.parse("{"+r+"}"):JSON.parse("{"+c.substring(1,c.length-1)+","+r+"}")}}else 0!==r.length&&!1!==asynjax.contains(l.className,r)||(a[o]=p)}}catch(e){throw a={},new Error(e.message)}return a},textError:function(e,r,a){"use strict";const o=a.trim(),t=o.toLowerCase();if(!0===asynjax.contains(t,"sesi")&&!0===asynjax.contains(t,"expirado"))return"La sesión ha expirado";{let a="";switch(parseInt(e)){case 0:a="Error de conectividad: Verificar la Red";break;case 400:a="Error de cliente: Solicitud incorrecta. [400]";break;case 401:a="Error de cliente: No autorizado, la autenticación es posible pero ha fallado o aún no se ha proporcionado. [401]";break;case 402:a="Error de cliente: Pago requerido. [402]";break;case 403:a="Error de cliente: Prohibido, el servidor se niega a responder. [403]";break;case 404:a="Error de cliente: La página solicitada no se encontró. [404]";break;case 405:a="Error de cliente: Método de solicitud no permitido. [405]";break;case 406:a="Error de cliente: La respuesta del servidor no es aceptada. [406]";break;case 407:a="Error de cliente: Debe primero autenticarse con el proxy. [407]";break;case 408:a="Error de cliente: El servidor agotó el tiempo de espera para la solicitud. [408]";break;case 409:a="Error de cliente: La solicitud no se pudo completar debido a un conflicto en la solicitud. [409]";break;case 410:a="Error de cliente: La página solicitada ya no está disponible. [410]";break;case 411:a='Error de cliente: La "longitud del contenido" no está definida. El servidor no aceptará la solicitud sin él. [411]';break;case 412:a="Error de cliente: La condición previa dada en la solicitud es evaluada como falsa por el servidor. [412]";break;case 413:a="Error de cliente: La entidad de solicitud es demasiado grande. [413]";break;case 414:a="Error de cliente: La URL es demasiado larga. [414]";break;case 415:a="Error de cliente: El tipo de medio no es compatible con el servidor. [415]";break;case 416:a="Error de cliente: El cliente ha solicitado una parte del archivo, pero el servidor no puede suministrar esa parte. [416]";break;case 417:a="Error de cliente: El servidor no puede cumplir con los requisitos del encabezado de la solicitud. [417]";break;case 418:a="Error de cliente: Soy una tetera. Se ha intentado realizar una solicitud de café en un servidor que no es una cafetera, sino una tetera. [418]";break;case 421:a="Error de cliente: Solicitud estraviada. La solicitud se dirigió a un servidor que no es capaz de producir una respuesta. [421]";break;case 422:a="Error de cliente: La solicitud está bien construida, pero fue imposible de entender debido a errores semánticos. [422]";break;case 423:a="Error de cliente: El recurso que está siendo accedido está bloqueado. [423]";break;case 424:a="Error de cliente: Error de dependencia. Error de la solicitud debido a un fallo de una solicitud anterior. [424]";break;case 426:a="Error de cliente: Actualización obligatoria : El cliente debe cambiar a un protocolo diferente. [426]";break;case 428:a="Error de cliente: Condición previa obligatoria. El servidor de origen requiere que la solicitud sea condicional. [428]";break;case 429:a="Error de cliente: El usuario ha enviado demasiadas solicitudes en un período de tiempo determinado. [429]";break;case 431:a="Error de cliente: El servidor no puede procesar la petición porque el conjunto de las cabeceras de la petición son demasiado grandes. [431]";break;case 451:a="Error de cliente: No disponible por razones legales. [451]";break;case 500:a="Error interno del servidor : El servidor encontró una condición inesperada. [500]";break;case 501:a="Error del Servidor: El servidor no reconoce el método de solicitud o carece de la capacidad para cumplir con la solicitud. [501]";break;case 502:a="Error del Servidor: El servidor está actuando como una puerta de enlace y recibió una respuesta no válida de otro servidor. [502]";break;case 503:a="Error del Servidor: El servidor no está disponible actualmente (sobrecargado | en mantenimiento | inactivo). [503]";break;case 504:a="Error del Servidor: El servidor está actuando como una puerta de enlace y no ha recibido a tiempo una respuesta de otro servidor, por lo que no puede responder adecuadamente a la petición solicitada. [504]";break;case 505:a="Error del Servidor: El servidor no admite la versión de protocolo HTTP utilizada en la solicitud. [505]";break;case 506:a="Error del Servidor: Variación también negocia. La negociación de contenido de los resultados de petición deriva en una referencia circular. [506]";break;case 507:a="Error del Servidor: No hay suficiente espacio de almacenamiento libre. [507]";break;case 508:a="Error del Servidor: La petición no se puede procesar porque el servidor ha encontrado un bucle infinito. [508]";break;case 510:a="Error del Servidor: La petición del cliente debe añadir más extensiones para que el servidor pueda procesarla. [510]";break;case 511:a="Error del Servidor: El cliente debe autenticarse para poder realizar peticiones. [511]";break;default:a="parsererror"===r?"Error de análisis en el JSON solicitado.":"timeout"===r?"Error: tiempo de espera excedido.":"abort"===r?"Petición Ajax abortada.":"Error no detectado ("+e+" - "+r+"): "+o}return a}},send:function(e,r,a,o){"use strict";let t=asynjax.httpRequest();t.open(r,e,!0,null,null);const n="object"==typeof o;if(t.withCredentials=!0===n&&!0===o.withCredentials,t.ontimeout=function(){console.error("Asynjax error: El tiempo de espera para la solicitud "+e+" a caducado.")},t.onerror=function(){console.error("Asynjax error: "+asynjax.textError(t.status,t.statusText,t.responseText))},t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status){let e=t.responseText;if(!0===n&&!0===o.asJson){let r=e.trim();try{e=JSON.parse(r)}catch(a){try{const a=r.replace(/\\'/g,"'");e=JSON.parse(a)}catch(r){e={}}}}a(!0,e)}else a(!1,asynjax.textError(t.status,t.statusText,t.responseText))},!0===n&&"function"==typeof o.progress&&(t.upload.onprogress=function(e){let r="?";e.lengthComputable&&(r=Math.round(e.loaded/e.total*100)),o.progress(r)}),t.setRequestHeader("Cache-Control","no-cache"),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),"POST"===r&&!0===n)if("object"==typeof o.formData)t.send(o.formData);else if(o.contentType&&t.setRequestHeader("Content-Type",o.contentType),o.form){const e="string"==typeof o.hideClass?o.hideClass:"",r=asynjax.getForm(o.form,e);t.send(asynjax.param(r))}else null===o.params?t.send():t.send(o.params);else t.send()},post:function(e,r,a){"use strict";if("function"==typeof r)asynjax.send(e,"POST",r);else{if("function"!=typeof a)return console.error("Asynjax error: No se encontró la función de salida."),!1;if("object"!=typeof r)return console.error("Asynjax error: Parámetro inválido, se requiere un objeto."),!1;if(!1!==r.contentType)if(r.contentType&&!0===asynjax.contains(r.contentType,"json")){if(r.params)try{r.params=JSON.stringify(r.params)}catch(e){throw new Error(e.message)}else r.params=null;r.contentType="application/json; charset=UTF-8"}else{if(r.params)try{r.params=asynjax.param(r.params)}catch(e){throw new Error(e.message)}else r.params=null;r.contentType=r.contentType||"application/x-www-form-urlencoded; charset=UTF-8"}asynjax.send(e,"POST",a,r)}}};