var MULTIPART_CHARS = "-_1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
function generateBoundary() {
var buffer = "";
for(var i = 1; i < 17; i++) {
buffer += (MULTIPART_CHARS[(Math.random() * (MULTIPART_CHARS.length - 0) + 0) | 0]);
}
return buffer;
};
function ajax(params) {
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
params.type = params.type || "GET";
params.data = params.data || null;
xhr.open(params.type, params.url, true);
if (params.data) {
if (params.type == "POST") {
xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + "----WebKitFormBoundary" + generateBoundary());
var formData = new FormData();
var key;
var attr;
for (key in params.files) {
if (params.files.hasOwnProperty(key)) {
attr = params.files[key];
formData.append(key, attr, attr.name);
}
}
for(key in params.data) {
if (params.data.hasOwnProperty(key)) {
attr = params.data[key];
console.log(key, "=>", attr);
formData.append('file-'+key, attr);
}
}
params.data = formData;
}else{
params.data = this.serialize(params.data);
}
}
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
var csrf = document.getElementsByName('csrf-token')[0];
if (csrf) {
xhr.setRequestHeader('X-CSRF-Token', csrf.getAttribute("content"));
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
params.success && params.success(xhr.responseText);
}
};
xhr.send(params.data);
};