# ic-ajax

> ember friendly $.ajax wrapper

Latest version **2.0.2** (published 2014-11-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install ic-ajax
pnpm add ic-ajax
yarn add ic-ajax
bun add ic-ajax
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2014-11-06 |
| First published | 2013-11-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 164 |
| Author | Ryan Florence |
| Maintainers | ryanflorence, fivetanley |
| Keywords | ember, ajax |

## Links

- npm: https://www.npmjs.com/package/ic-ajax
- Repository: https://github.com/instructure/ic-ajax
- Issues: https://github.com/instructure/ic-ajax/issues
- npm.io page: https://npm.io/package/ic-ajax

## Recent versions

- 2.0.2 (latest) — 2014-11-06
- 2.0.1 — 2014-06-12
- 2.0.0 — 2014-06-10
- 1.0.4 — 2014-03-20
- 1.0.3 — 2014-03-20
- 1.0.1 — 2014-03-06
- 1.0.0 — 2014-02-28
- 0.4.0 — 2014-02-07
- 0.3.0 — 2014-01-22
- 0.2.1 — 2014-01-06
- 0.2.0 — 2013-11-29
- 0.1.2 — 2013-11-26
- 0.1.0 — 2013-11-25

## README

ic-ajax
=======

[![Build Status](https://travis-ci.org/instructure/ic-ajax.png)](https://travis-ci.org/instructure/ic-ajax)

Ember-friendly `jQuery.ajax` wrapper.

- returns RSVP promises
- makes apps more testable (resolves promises with `Ember.run`)
- makes testing ajax simpler with fixture support

Installation
------------

`bower install ic-ajax`

... or ...

`npm install ic-ajax`

Module Support
--------------

Note the `dist` directory has multiple module formats, use whatever
works best for you.

- AMD

  `define(['ic-ajax'], function(ajax) {});`

- Node.JS (CJS)

  `var ajax = require('ic-ajax')`

- Globals

  `var ajax = ic.ajax;`

  All instructure canvas stuff lives on the `ic` global.

API
---

This lib simply wraps `jQuery.ajax` with two exceptions:

- success and error callbacks are not supported
- does not resolve three arguments like $.ajax (real promises only
  resolve a single value). `request` only resolves the response data
  from the request, while `raw` resolves an object with the three
  "arguments" as keys if you need them.

Other than that, use `request` exactly like `$.ajax`.

```js
var ajax = ic.ajax;

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return ajax.request('/foo');
  }
}

// if you need access to the jqXHR or textStatus, use raw
ajax.raw('/foo').then(function(result) {
  // result.response
  // result.textStatus
  // result.jqXHR
});
```

Simplified Testing
------------------

In order to test newly added code you must rebuild the distribution.

```bash
broccoli build dist
```

Adding fixtures with `defineFixture` tells ic-ajax to resolve the promise
with the fixture matching a url instead of making a request. This allows
you to test your app without creating fake servers with sinon, etc.

Example:

```js
ic.ajax.defineFixture('api/v1/courses', {
  response: [{name: 'basket weaving'}],
  jqXHR: {},
  textStatus: 'success'
});

ic.ajax.request('api/v1/courses').then(function(result) {
  deepEqual(result, ic.ajax.lookupFixture('api/v1/courses').response);
});
```

To test failure paths, set the `textStatus` to anything but `success`.


Contributing
------------

Install dependencies and run tests with the following:

```sh
npm install
npm test
```

For those of you with release privileges:

```sh
npm run-script release
```

Special Thanks
--------------

Inspired by [discourse ajax][1].

License and Copyright
---------------------

MIT Style license

(c) 2014 Instructure, Inc.


  [1]:https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/mixins/ajax.js#L19

---
_Source: https://npm.io/package/ic-ajax · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
