JSFiddle - React, Tailwind, and code Playground

by LyndseyB

JavaScript

var ajax = function ajax(url, data, callback, method) {
	var request = new XMLHttpRequest();
  
  if(!request) {
  	throw('XMLHttpRequest is unavailable');
  }
  
  if(typeof url !== 'string' || url === '') {
  	throw('Missing parameter url');
  }
  
  method = method || 'POST';
  
  switch(method.toUpperCase()) {
  	case 'GET':
    case 'POST':
    	break;
    default:
    	throw('ajax method is undefined. Please use GET or POST.');
  }
  
  var ajaxData = Object.assign({}, data);
  
  if(typeof ajaxData !== 'string') {
  	ajaxData = JSON.stringify(ajaxData);
  }
  
  if(callback && typeof callback === 'function') {
    request.onreadystatechange = function() {
      if(request.readyState === XMLHttpRequest.DONE) {
        if(request.status !== 200) {
            callback('Ajax request error: ' + request.statusText, null);     
            return;
        }
        callback(null, ajaxData, request.responseText);
      }    
    }
  }
  
  request.open(method, url);
  request.send(ajaxData); 
};

function ajaxCallback(err, data, response) {
	if(err) {
  	throw(err);
  }  
  console.log(data, response);
}

ajax('/echo/json', { name: 'Lyndsey', age: 30 }, ajaxCallback, 'POST');