Ajax Requests mit Vanilla JS zu schreiben war bisher immer riesiger Pain, zum Glück gibt es die neue fetch-API in allen modernen Browsern. Damit kann jQueries $.ajax Methode gut ersetzt werden.

Vorteile:

• Promises!!!
• klare API
• keine Data String Orgien sondern Objekte
• Promises !1!!
• natives Javascript, keine Abhängigkeiten
• sehr gute Lesbarkeit, besonders wenn man später Fehler handlet

Beispielcode:

$.ajax({
    type: 'POST',
    url: 'URL',
    data: 'parameter1=value1&parameter2='+variablerParameter,
    success: function(data) {
        ...
    }
})

wird zu:

var formData = new FormData();
formData.append('parameter1',parameter2);
formData.append('parameter2',variablerParameter);

fetch("URL", {
      method: 'POST',
      credentials: 'include',
      body: formData
}).then(response => response.json())
.then(function(result) {
    ...
}

In den alten XHR Requests wurden die Cookies immer mitgesendet, das ist in der neuen Fetch API optional, daher die Zeile: credentials: 'include'

Bonusbonbon:

mit dem Formdata Objekt kann auch Dateiupload mit Javascript realisiert werden.