Reinventing the wheel with another ajax library for browsers.
This one is really simple and compact.
- One function,
ajax
. - Three parameters, only the first is mandatory:
- URL.
- Options object with
method
,headers
andbody
, like the new fetch API.- Additionally, an
xhr
field for passing your ownXMLHttpRequest
instance. Useful if you need access for monitoring its progress. - TypeScript definition provided:
AjaxOptions
.
- Additionally, an
- Object with query parameters. Keys are sorted and passed (with values) through
encodeURIComponent
.
- Returns a
Promise
. Resolves afteronload
with status 200, rejects otherwise.- Either way, the value of the
Promise
is theXMLHttpRequest
object.
- Either way, the value of the
import { ajax } from 'charto-ajax';
ajax(
'https://www.google.com/',
{ method: 'GET' },
{ q: 'ajax' }
).then(
(xhr) => console.log(xhr.responseText)
);
- This is less code than a polyfill.
- The returned
Promise
is rejected on HTTP errors like 404. - Easy access to the
XMLHttpRequest
object during and after requests, which may be useful. - Query parameters are handled for you. Might save a bit of code, YMMV.
Copyright (c) 2017 BusFaster Ltd