A Backbone.Ajax function powered by native XHR methods

Usage no npm install needed!

<script type="module">
  import backboneNativeajax from '';



A drop-in replacement for Backbone.Ajax that uses only native XMLHttpRequest methods for sync. It has no dependency on jQuery.

You might consider using the window.fetch pollyfill coupled with a simple plugin for Backbone instead of this project if you need better Promise or header support.

To Use:

Load Backbone.NativeAjax with your favorite module loader or add as a script tag after you have loaded Backbone in the page.

If loading with AMD or CommonJS you should set Backbone.ajax yourself:

// AMD
define(['backbone', 'nativeajax'], function(Backbone, ajax) {
  Backbone.ajax = ajax;

// CommonJS
var Backbone = require('backbone');
Backbone.ajax = require('backbone.nativeajax');


  • Accepts success and error callbacks
  • Set headers with a headers object
  • beforeSend


NativeAjax uses XMLHttpRequest which is supported in modern browsers. See the compatibility chart.

It also makes use of Function.prototype.bind which can be easily pollyfilled in older environments.

Set a Promise object on the global or on Backbone.ajax to return a promise.


  • The ajax function accepts a success and error callbacks. To return a promise object, set a global Promise or Backbone.ajax.Promise.
  • Unlike jQuery, we don't automatically set the X-Requested-With header, so things like Rails' request.xhr? will break. If you need it, you can pass it in yourself.

Uses code from Exoskeleton. See that project for more information and other features.