Skip to content

Instantly share code, notes, and snippets.

@Daniel15
Created November 26, 2013 05:20
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Daniel15/7653825 to your computer and use it in GitHub Desktop.
Save Daniel15/7653825 to your computer and use it in GitHub Desktop.
Basic AJAX loading
/**
* Does an AJAX load of the specified URL
*
* @param {String} url URL to load
* @param {Object} data Hash of data to send in querystring
* @param {Function} callback Function to call once request returns
*/
function load(url, data, callback) {
if (data) {
var params = Object.keys(data)
.map(function(key) {
return key + '=' + encodeURIComponent(data[key]);
})
.join('&');
url += '?' + params;
}
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
// Try parse as JSON
var data;
try {
data = JSON.parse(xhr.responseText);
} catch (ex) {
data = null;
}
// Check for success
if (xhr.status != 200 || !data || !data.success) {
var message = (data && data.message) || xhr.responseText;
alert('Something broke with the request: ' + message);
return;
}
callback(data);
}
}
xhr.send();
return xhr;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment