Go to file
Geoff Doty 8d4d1cfbdb initial port of lib 2019-09-24 21:29:55 -05:00
dist initial port of lib 2019-09-24 21:29:55 -05:00
src initial port of lib 2019-09-24 21:29:55 -05:00
test initial port of lib 2019-09-24 21:29:55 -05:00
.eslintrc.json initial port of lib 2019-09-24 21:29:55 -05:00
.gitignore initial port of lib 2019-09-24 21:29:55 -05:00
CONTRIBUTING.md initial port of lib 2019-09-24 21:29:55 -05:00
LICENSE initial port of lib 2019-09-24 21:29:55 -05:00
README.md initial port of lib 2019-09-24 21:29:55 -05:00
package-lock.json initial port of lib 2019-09-24 21:29:55 -05:00
package.json initial port of lib 2019-09-24 21:29:55 -05:00

README.md

HTTP

A tiny http/ajax library.

Weighs in at less than 300 bytes gzipped and minified. It is very basic, but contains support for cross-domain requests back to somewhat older browsers (See Compatibility).

Fork of nanoajax to make more encapsulated

Install

Just include from /dist

<script src="/http.min.js"></script>

build from source with: npm run build

Use

GET

http({url:'/some-get-url'}, function (code, responseText) { ... });

POST

http({url: '/some-post-url', method: 'POST', body: 'post=content&args=yaknow'}, function (code, responseText, request) {
    # code is response code
    # responseText is response body as a string
    # request is the xmlhttprequest, which has `getResponseHeader(header)` function
});

Documentation

Simple and small ajax decorator function for almost any browser. Takes a parameters object and a callback function.

Parameters:

  • url: string, required
  • headers: object of {header_name: header_value, ...}
  • body:
    • string (sets content type to 'application/x-www-form-urlencoded' if not set in headers)
    • FormData (doesn't set content type so that browser will set as appropriate)
  • method: 'GET', 'POST', etc. Defaults to 'GET' or 'POST' based on body
  • cors: If your using cross-origin, you will need this true for IE8-9 (to use the XMLDomainRequest object, also see Compatibility)

The following parameters are passed directly onto the request object:

IMPORTANT NOTE: The caller is responsible for compatibility checking.

  • responseType: string, various compatibility, see XHR docs for enum options
  • withCredentials: boolean, IE10+, CORS only
  • timeout: long, ms timeout, IE8+
  • onprogress: callback, IE10+

Callback function prototype:

  • statusCode: integer status or null
    • if request errors for some browsers (notably Chrome), this is 0 (and response is "Error")
  • response:
    • if responseType set and supported by browser, this is an object of some type (see docs)
    • otherwise if request completed, this is the string text of the response
    • if request is aborted, this is "Abort"
    • if request times out, this is "Timeout"
    • if request errors before completing (probably a CORS issue), this is "Error"
  • request object

Returns the request object. So you can call .abort() or other methods

Compatibility

http works on android, iOS, IE8+, and all modern browsers, with some (known) caveats.

  • Safari is conservative with cookies and will not allow cross-domain cookies to be set from domains that have never been visited by the user.
  • IE8 and IE9 do not support cookies in cross-domain requests in this library. There are other solutions out there, but this library has chosen small over edge case compatibility.

License

MIT