- @lion/ajax@0.1.19 - @lion/button@0.3.35 - @lion/calendar@0.3.0 - @lion/checkbox-group@0.2.0 - @lion/checkbox@0.2.0 - @lion/choice-input@0.3.0 - @lion/core@0.3.0 - @lion/field@0.4.0 - @lion/fieldset@0.2.0 - @lion/form-system@0.1.0 - @lion/form@0.2.0 - @lion/icon@0.2.9 - @lion/input-amount@0.2.0 - @lion/input-date@0.2.0 - @lion/input-datepicker@0.3.0 - @lion/input-email@0.2.0 - @lion/input-iban@0.2.0 - @lion/input@0.2.0 - @lion/localize@0.5.0 - @lion/option@0.2.10 - @lion/overlays@0.6.3 - @lion/popup@0.3.12 - @lion/radio-group@0.2.0 - @lion/radio@0.2.0 - @lion/select-rich@0.4.0 - @lion/select@0.2.0 - @lion/steps@0.2.0 - @lion/switch@0.2.0 - @lion/tabs@0.1.1 - @lion/textarea@0.2.0 - @lion/tooltip@0.3.12 - @lion/validate@0.3.0 |
||
|---|---|---|
| .. | ||
| src | ||
| stories | ||
| test | ||
| CHANGELOG.md | ||
| index.js | ||
| package.json | ||
| README.md | ||
Ajax
ajax is the global manager for handling all ajax requests.
It is a promise based system for fetching data, based on axios
Features
- only JS functions, no (unnecessarily expensive) web components
- supports GET, POST, PUT, DELETE, REQUEST, PATCH and HEAD methods
- can be used with or without XSRF token
How to use
Installation
npm i --save @lion/ajax
Example
import { ajax } from '@lion/ajax';
ajax
.get('data.json')
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
});
Create own instances for custom options
Cancel
import { AjaxClass } from '@lion/ajax';
const myAjax = AjaxClass.getNewInstance({ cancelable: true });
myAjax
.get('data.json')
.then(response => {
document.querySelector('#canceled').innerHTML = JSON.stringify(response.data);
})
.catch(error => {
document.querySelector('#canceled').innerHTML = `I got cancelled: ${error.message}`;
});
setTimeout(() => {
myAjax.cancel('too slow');
}, 1);
Cancel previous on new request
import { AjaxClass } from '@lion/ajax';
const myAjax = AjaxClass.getNewInstance({ cancelPreviousOnNewRequest: true });
myAjax
.get('data.json')
.then(response => {
document.querySelector('#request1').innerHTML = 'Request 1: ' + JSON.stringify(response.data);
})
.catch(error => {
document.querySelector('#request1').innerHTML = `Request 1: I got cancelled: ${error.message}`;
});
myAjax
.get('data2.json')
.then(response => {
document.querySelector('#request2').innerHTML = 'Request 2: ' + JSON.stringify(response.data);
})
.catch(error => {
document.querySelector('#request2').innerHTML = `Request 2: I got cancelled: ${error.message}`;
});
Considerations
Due to a bug in axios options may leak in to other instances. So please avoid setting global options in axios. Interceptors have no issues.
Future plans
- Endplan is to remove axios and replace it with fetch
- This wrapper exist so that this switch should not mean any breaking changes for our users