|
/* |
|
This is a snippet, for the complete function/class see: |
|
https://github.com/wdg/_.js/blob/master/latest/_.js |
|
*/ |
|
/** |
|
* ajaxPost |
|
* |
|
* ajaxPost Posts a form, tru ajax. |
|
* Please not call this function yourself, unless you know what you are doing! |
|
* |
|
* @internal |
|
* @web only |
|
* @param object object Wrapper |
|
* @param string form Form to handle |
|
* @param function callback callback to |
|
* @return bool |
|
* @example _('.wrapper').ajaxPost(form) |
|
*/ |
|
ajaxPOST: function (form, callback) { |
|
if (!this.nodeJS) { |
|
var len = this.length |
|
|
|
while (len--) { |
|
self._lastObj = this[len] |
|
var xmlPhttp |
|
var change = this[len] |
|
|
|
if (self.XMLHttpRequest) { |
|
xmlPhttp = new self.XMLHttpRequest() // code for IE7+, Firefox, Chrome, Opera, Safari |
|
} else { |
|
xmlPhttp = new self.ActiveXObject('Microsoft.XMLHTTP') // code for IE6, IE5 |
|
} |
|
|
|
// Add form to FormData |
|
var formData = new FormData(form) //eslint-disable-line |
|
|
|
xmlPhttp.setRequestHeader('Content-Type', 'multipart/form-data'); |
|
|
|
// Open |
|
xmlPhttp.open('POST', form.action, true) |
|
|
|
// Progress (we do not use it (yet)) |
|
xmlPhttp.upload.onprogress = function (e) { |
|
if (e.lengthComputable) { |
|
var progress = (e.loaded / e.total) * 100 |
|
console.log('Progress = ' + progress + '%') |
|
} |
|
} |
|
|
|
// Readystate Change(d) |
|
xmlPhttp.onreadystatechange = function () { |
|
if (xmlPhttp.readyState === 4 && xmlPhttp.status === 200) { |
|
change.innerHTML = xmlPhttp.responseText |
|
|
|
// JavaScript Fix! |
|
var js = change.getElementsByTagName('script') |
|
for (var i = 0, j = js.length; i < j; i++) { |
|
eval(js[i].innerHTML) //eslint-disable-line |
|
} |
|
|
|
// fix posts also (.ajax) |
|
var pst = change.getElementsByTagName('form') |
|
for (var ii = 0, jj = pst.length; ii < jj; ii++) { |
|
if (pst[ii].method.toLowerCase() === 'post') { |
|
pst[ii].setAttribute('onsubmit', "event.preventDefault();_('." + change.className + "').ajaxPOST(this);") |
|
} |
|
} |
|
} |
|
} |
|
|
|
// Send our FormData |
|
xmlPhttp.send(formData) |
|
} |
|
} |
|
return false |
|
} |