vrijdag 19 juni 2020

Ajax met de gediscrimineerde jQuery

jQuery is een hele kleine handige library, die ontwikkelaars discrimineren omdat er in het verleden zoveel bagger mee gemaakt is. Aan dat ongenuanceerde bashen doe ik niet mee.

Hoe kun je in jQuery een ajax call doen?

Tegenwoordig maakt jQuery niet meer gebruik van z'n eigen Promise objecten, maar van de standaard objecten.

function getObjects(accessToken) {
 return $.ajax({
  headers: {
   'Authorization': 'bearer ' + accessToken
  },
  type: "POST",
  cache: false,
  contentType: 'application/json; charset=UTF-8',
  url: 'https://server/api/Object/Query?apikey=meuk&version=1.0',
  data: JSON.stringify({
   "filter": [
    {
     "Criteria": "value"
    }
   ],
   "othercriteria": null
  }),
  dataType: "json"
 });
}

Je kunt dan doen:

async function loginREST(username, password) {
 let factory = new TokenFactory(username, password);
 factory.getAccessToken().then(async (accessToken) => {
  let objects = await getObjects(accessToken);
  console.log(devices);
 }).catch(function (err) {
  throw err;
 });
}

Ter inspiratie voor een crossdomain ajax call:

$.ajax({
 crossDomain: true,
 xhrFields: {
  withCredentials: true
 },
 url: url + '?type=html',
 timeout: 30000,
 headers: { 'X-Element-Id': xElementId }
}).then(function (response) {
 // code
}).fail(function () {
 // code
});