The global fetch function is an easier way to make web requests and handle
responses than using an XMLHttpRequest. This polyfill is written as closely as
possible to the standard Fetch specification at https://fetch.spec.whatwg.org.
You'll also need a Promise polyfill for older browsers.
$ bower install es6-promise
This can be also be installed with npm.
$ npm install github/fetch --save
Usage
The fetch function supports any HTTP method. We'll focus on GET and POST
example requests.
HTML
fetch('/users.html')
.then(function(response){
returnresponse.text()
}).then(function(body){
document.body.innerHTML= body
})
JSON
fetch('/users.json')
.then(function(response){
returnresponse.json()
}).then(function(json){
console.log('parsed json', json)
}).catch(function(ex){
console.log('parsing failed', ex)
})
Response metadata
fetch('/users.json').then(function(response){
console.log(response.headers.get('Content-Type'))
console.log(response.headers.get('Date'))
console.log(response.status)
console.log(response.statusText)
})
Post form
var form =document.querySelector('form')
fetch('/query',{
method:'post',
body:newFormData(form)
})
Post form fields
fetch('/query',{
method:'post',
body:{
name:'Hubot',
login:'hubot'
}
})
Post JSON
fetch('/users',{
method:'post',
headers:{
'Accept':'application/json',
'Content-Type':'application/json'
},
body:JSON.stringify({
name:'Hubot',
login:'hubot',
})
})
File upload
var input =document.querySelector('input[type="file"]')
var form =newFormData()
form.append('file',input.files[0])
form.append('user','hubot')
fetch('/avatars',{
method:'post',
body: form
})
Success and error handlers
This causes fetch to behave like jQuery's $.ajax by rejecting the Promise
on HTTP failure status codes like 404, 500, etc. The response Promise is
resolved only on successful, 200 level, status codes.
functionstatus(response){
if(response.status>=200&&response.status<300){
returnPromise.resolve(response)
}else{
returnPromise.reject(response)
}
}
functionjson(response){
returnresponse.json()
}
fetch('/users')
.then(status)
.then(json)
.then(function(json){
console.log('request succeeded with json response', json)
}).catch(function(response){
console.log('request failed with status',response.status)