|
|
|
@ -1,4 +1,6 @@ |
|
|
|
|
/*!chibi 3.0.7, Copyright 2012-2016 Kyle Barrow, released under MIT license */ |
|
|
|
|
|
|
|
|
|
// MODIFIED VERSION.
|
|
|
|
|
(function () { |
|
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
@ -6,7 +8,6 @@ |
|
|
|
|
loadedfn = [], |
|
|
|
|
domready = false, |
|
|
|
|
pageloaded = false, |
|
|
|
|
jsonpcount = 0, |
|
|
|
|
d = document, |
|
|
|
|
w = window; |
|
|
|
|
|
|
|
|
@ -598,103 +599,52 @@ |
|
|
|
|
return cb; |
|
|
|
|
}; |
|
|
|
|
// Basic XHR 1, no file support. Shakes fist at IE
|
|
|
|
|
cb.ajax = function (url, method, callback, nocache, nojsonp) { |
|
|
|
|
cb.ajax = function (url, method, callback) { |
|
|
|
|
var xhr, |
|
|
|
|
query = serializeData(nodes), |
|
|
|
|
type = (method) ? method.toUpperCase() : 'GET', |
|
|
|
|
hostsearch = new RegExp('http[s]?://(.*?)/', 'gi'), |
|
|
|
|
domain = hostsearch.exec(url), |
|
|
|
|
timestamp = '_ts=' + (+new Date()), |
|
|
|
|
head = d.getElementsByTagName('head')[0], |
|
|
|
|
jsonpcallback = 'chibi' + (+new Date()) + (jsonpcount += 1), |
|
|
|
|
script; |
|
|
|
|
|
|
|
|
|
if (query && (type === 'GET' || type === 'DELETE')) { |
|
|
|
|
timestamp = '_ts=' + (+new Date()); |
|
|
|
|
|
|
|
|
|
if (query && (type === 'GET')) { |
|
|
|
|
url += (url.indexOf('?') === -1) ? '?' + query : '&' + query; |
|
|
|
|
query = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// JSONP if cross domain url
|
|
|
|
|
if (type === 'GET' && !nojsonp && domain && w.location.host !== domain[1]) { |
|
|
|
|
|
|
|
|
|
if (nocache) { |
|
|
|
|
url += (url.indexOf('?') === -1) ? '?' + timestamp : '&' + timestamp; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Replace possible encoded ?
|
|
|
|
|
url = url.replace('=%3F', '=?'); |
|
|
|
|
|
|
|
|
|
// Replace jsonp ? with callback
|
|
|
|
|
if (callback && url.indexOf('=?') !== -1) { |
|
|
|
|
|
|
|
|
|
url = url.replace('=?', '=' + jsonpcallback); |
|
|
|
|
|
|
|
|
|
w[jsonpcallback] = function (data) { |
|
|
|
|
try { |
|
|
|
|
callback(data, 200); |
|
|
|
|
} catch (e) {} |
|
|
|
|
|
|
|
|
|
// Tidy up
|
|
|
|
|
w[jsonpcallback] = undefined; |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// JSONP
|
|
|
|
|
script = document.createElement('script'); |
|
|
|
|
script.async = true; |
|
|
|
|
script.src = url; |
|
|
|
|
|
|
|
|
|
// Tidy up
|
|
|
|
|
script.onload = function () { |
|
|
|
|
head.removeChild(script); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
head.appendChild(script); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
xhr = new XMLHttpRequest(); // we dont support IE < 9
|
|
|
|
|
|
|
|
|
|
if (w.XMLHttpRequest) { |
|
|
|
|
xhr = new XMLHttpRequest(); |
|
|
|
|
} else if (w.ActiveXObject) { |
|
|
|
|
xhr = new ActiveXObject('Microsoft.XMLHTTP'); // IE < 9
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (xhr) { |
|
|
|
|
|
|
|
|
|
if (nocache) { |
|
|
|
|
url += (url.indexOf('?') === -1) ? '?' + timestamp : '&' + timestamp; |
|
|
|
|
} |
|
|
|
|
if (xhr) { |
|
|
|
|
// prevent caching
|
|
|
|
|
url += (url.indexOf('?') === -1) ? '?' + timestamp : '&' + timestamp; |
|
|
|
|
|
|
|
|
|
// Douglas Crockford: "Synchronous programming is disrespectful and should not be employed in applications which are used by people"
|
|
|
|
|
xhr.open(type, url, true); |
|
|
|
|
// Douglas Crockford: "Synchronous programming is disrespectful and should not be employed in applications which are used by people"
|
|
|
|
|
xhr.open(type, url, true); |
|
|
|
|
|
|
|
|
|
xhr.onreadystatechange = function () { |
|
|
|
|
if (xhr.readyState === 4) { |
|
|
|
|
if (callback) { |
|
|
|
|
callback(xhr.responseText, xhr.status); |
|
|
|
|
} |
|
|
|
|
xhr.onreadystatechange = function () { |
|
|
|
|
if (xhr.readyState === 4) { |
|
|
|
|
if (callback) { |
|
|
|
|
callback(xhr.responseText, xhr.status); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); |
|
|
|
|
|
|
|
|
|
if (type === 'POST' || type === 'PUT') { |
|
|
|
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
xhr.send(query); |
|
|
|
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); |
|
|
|
|
|
|
|
|
|
if (type === 'POST' || type === 'PUT') { |
|
|
|
|
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
xhr.send(query); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return cb; |
|
|
|
|
}; |
|
|
|
|
// Alias to cb.ajax(url, 'get', callback, nocache, nojsonp)
|
|
|
|
|
cb.get = function (url, callback, nocache, nojsonp) { |
|
|
|
|
return cb.ajax(url, 'get', callback, nocache, nojsonp); |
|
|
|
|
// Alias to cb.ajax(url, 'get', callback)
|
|
|
|
|
cb.get = function (url, callback) { |
|
|
|
|
return cb.ajax(url, 'get', callback); |
|
|
|
|
}; |
|
|
|
|
// Alias to cb.ajax(url, 'post', callback, nocache)
|
|
|
|
|
cb.post = function (url, callback, nocache) { |
|
|
|
|
return cb.ajax(url, 'post', callback, nocache); |
|
|
|
|
// Alias to cb.ajax(url, 'post', callback)
|
|
|
|
|
cb.post = function (url, callback) { |
|
|
|
|
return cb.ajax(url, 'post', callback); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return cb; |
|
|
|
|