Created
March 25, 2015 18:31
-
-
Save 13twelve/9b3c5f91bf805e8f3a73 to your computer and use it in GitHub Desktop.
Ajax helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
A17.Helpers.ajax_request = function(settings) { | |
/* | |
# A17.Helpers.ajax_request | |
* v.1 | |
## description | |
Performs ajax requests | |
## requires | |
* A17.Helpers.turn_object_to_queryString | |
## parameters | |
settings object - required: | |
* url - required - url to send request to | |
* type - required - HTTP method to use ("POST", "GET", "PUT") | |
* data - optional - data object turned into a query string on the request | |
* requestHeaders - optional - an array of request header objects with header/value pairs eg: [{ header: "X-Requested-With", value: "XMLHttpRequest" }] | |
* onSuccess - optional - function to run on request success, returns the responseText, in whatever format that is | |
* onError - optional - function to run on request error, returns the responseText, if there is any, in whatever format that is | |
## returns | |
* nothing | |
## example usage: | |
A17.Helpers.ajax_request({ | |
url: '/form-post.php', | |
type: "POST", | |
data: { | |
param1: "param1value", | |
param2: "param2value" | |
}, | |
requestHeaders: [ | |
{ | |
header: "Content-Type", | |
value: "application/x-www-form-urlencoded; charset=UTF-8" | |
}, | |
{ | |
header: "X-Requested-With", | |
value: "XMLHttpRequest" | |
} | |
], | |
onSuccess: function(data){ | |
el.innerHTML = data; | |
}, | |
onError: function(data){ | |
alert(data); | |
} | |
}); | |
*/ | |
var options = settings; | |
var request = new XMLHttpRequest(); | |
options.query_string = ""; | |
if (options.data !== undefined) { | |
if (A17.Helpers.turn_object_to_queryString) { | |
options.query_string = A17.Helpers.turn_object_to_queryString(options.data); | |
} else { | |
console.log("Missing: A17.Helpers.turn_object_to_queryString"); | |
} | |
} | |
request.open(options.type, options.url+options.query_string, true); | |
if (options.type === "POST" && options.requestHeaders === undefined) { | |
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); | |
} | |
if (options.requestHeaders !== undefined && options.requestHeaders.length > 0) { | |
for (var i = 0; i < options.requestHeaders.length; i++) { | |
var header = options.requestHeaders[i].header; | |
var value = options.requestHeaders[i].value; | |
if (header !== undefined && value !== undefined) { | |
request.setRequestHeader(header, value); | |
} | |
} | |
} | |
request.onload = function() { | |
if (request.status >= 200 && request.status < 400){ | |
// Success! | |
if ((typeof options.onSuccess).toLowerCase() === "function") { | |
options.onSuccess.call(this,request.responseText); | |
} | |
} else { | |
console.log("We reached our target server, but it returned an error: "+request.statusText); | |
if ((typeof options.onError).toLowerCase() === "function") { | |
options.onError.call(this,request.responseText); | |
} | |
} | |
}; | |
request.onerror = function() { | |
console.log("There was a connection error of some sort"); | |
if ((typeof options.onError).toLowerCase() === "function") { | |
options.onError.call(); | |
} | |
}; | |
request.send(); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment