krampstudio / aja.js

Ajax without XML : Asynchronous JavaScript and JavaScript/JSON(P)
http://krampstudio.github.io/aja.js/
MIT License
306 stars 45 forks source link

aja.js Build Status NPM version Built with Grunt CDNJS

Ajax without XML : Asynchronous Javascript and JavaScript/JSON(P)

Npm Downloads

Basic Sample

Request JSON data

  aja()
    .url('/api/data.json')
    .on('success', function(data){
        //data is a JavaScript object
    })
    .go();

Load html into an element

  aja()
    .url('/views/page.html')
    .into('.container')
    .go();

More options using the fluent api, terrific REST client.

  aja()
    .method('GET')
    .url('/api/customer')
    .timeout(2500)
    .data({firstname: 'John Romuald'})
    .on('200', function(response){
        //well done
    })
    .on('timeout', functon(){
        // uh oh... Request ended. Do something fancy here, don't let your user wait forever!
    })
    .go();

  aja()
    .method('PUT')
    .url('/api/customer')
    .cache(false)
    .body({id : 12, firstname: 'John Romuald', job : 'linguist'})
    .on('200', function(response){
        //well done
    })
    .on('40x', function(response){
        //something is definitely wrong
    })
    .on('500', function(response){
        //oh crap
    })
    .go();

JSONP

  aja()
    .url('http://otherdomain.com/api/remoteScript')
    .type('jsonp')
    .jsonPaddingName('callbackParameter')
    .jsonPadding('someGlobalFunction')
    .on('success', function(data){
        //Fuk cross origin policy
    })
    .go();

Raw script loading

    aja()
      .url('http://platform.twitter.com/widgets.js')
      .type('script')
      .on('success', function(){
          window.twttr.widgets.load();
      })
      .go();

Development

Setup

You need grunt >= 0.4 as well as node and npm installed and running on your system.

git clone https://github.com/krampstudio/aja.js.git
cd aja.js
npm install

Tests

Run the tests:

grunt test

Development

The dev of this library is based on TDD principle. So, dev means write tests. Run the developent server :

grunt devtest

So tests run once something is modified and you can access it also at http://localhost:9901/test

Contributing

Contributions (issue reporting, bug fixes, feedback, typos, gimie a tip, etc.) are really welcomed! This library is developed using the TDD principles, so I accept pull request only if they come with the according unit/integration test.

I'd love if somebody can create a nice logo for aja.js...

History

License

Copyright (c) 2014 Bertrand Chevrier <"chevrier_bertrand gmail_com".replace(/\s/, '@').replace(/_/g, '.')> Licensed under the MIT license.