Ajax module dev
Developpement of the Ajax module.
by Imabot
JavaScript
// Simple Ajax module
// Create an Ajax object
// Settings can be the API url
// Settings can be an object the following keys: url, method and/or data
// Each key is optionnal
var ajax = (settings=undefined) => {
// Contains the request parameters
let params = {};
// Process constructor arguments
switch (typeof settings) {
case 'string' : params.url = settings; break
case 'object' : params = settings; break;
}
// Create the data key for future use
if (!('data' in params)) params.data = {};
if (!('method' in params)) params.method = 'POST';
// Promise resolve and reject
let promise = {
resolve:null,
reject:null
}
// HTTP request object
let request = new XMLHttpRequest();
// Set URL
var url = function(url) {
params.url=url;
return this;
}
// Set method (POST or GET)
var method = function(method) {
params.method = method;
return this;
}
// Push data (key and value) or object
var data = function(objectOrKey, value) {
push(objectOrKey, value)
return this;
}
var push = function(objectOrKey, value)
{
switch (typeof objectOrKey)
{
case 'object': params.data = Object.assign(objectOrKey, params.data); break;
case 'string': params.data = Object.assign({ [objectOrKey]: value}, params.data); break;
}
}
var post = function(data)
{
params.method='POST';
return send(data);
}
var get = function(data)
{
params.method='GET';
return send(data);
}
// Send request and return a promise
var send = function(data)
{
push(data);
return new Promise((resolve, reject) => {
promise.resolve = resolve;
promise.reject = reject;
request.onreadystatechange = callBack;
request.open(params.method, params.url); ...