Geoff Doty 8d4d1cfbdb | ||
---|---|---|
dist | ||
src | ||
test | ||
.eslintrc.json | ||
.gitignore | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
package-lock.json | ||
package.json |
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, requiredheaders
: 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 bodycors
: 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 optionswithCredentials
: boolean, IE10+, CORS onlytimeout
: 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")
- if request errors for some browsers (notably Chrome), this is 0 (and
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"
- if
- 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.