ajax.js 1.35 KB
class Ajax {

    constructor(object){
        if (typeof object !== "object") this.data = {};
        else this.data = object;
        this.http = new XMLHttpRequest();
    }

    default(){
        if (!("url" in this.data)) throw "URL not set";
        if (!("async" in this.data)) this.data.async = true;
        if ("success" in this.data)
            this.http.onload = () => { if (this.http.status == 200) this.data.success(this.http.response); }
        if (this.data.async === false && "timeout" in this.data){
            this.http.timeout = this.data.timeout;
            if ("ontimeout" in this.data) this.http.ontimeout = (this.data.ontimeout).bind(this.http);
        }
    }

    post(){
        this.default();
        this.http.open("POST", this.data.url, this.data.async);
        if ("contentType" in this.data) this.http.setRequestHeader('Content-Type', this.data.contentType);
        if ("data" in this.data) this.http.send(JSON.stringify(this.data.data));
        else this.http.send();
    }
        
    get(){
        this.default();
        if ("data" in this.data) this.http.open("GET", this.data.url + "?" + this.data.data, this.data.async);
        else this.http.open("GET", this.data.url, this.data.async);
        if ("contentType" in this.data) this.http.setRequestHeader('Content-Type', this.data.contentType);
        this.http.send();
    }
}