js 常用工具方法彙總

weixin_34279579發表於2018-05-23

此貼記錄所有我自己封裝的一些專案中常用的工具方法,歡迎各種指導+補充。互相學習啦!
Ajax請求:

xAjax.request = function(options){
    if(!options || typeof options != "object"){
        return false;
    }
    //請求型別,不傳,預設get
    var type = options.type || "get";
    //請求地址
    var url = options.url || location.pathname;
    //非同步or同步
    var async = (options.async === false) ?false:true;
    //請求內容的格式
    var contentType = options.contentType || "type/html";
    //資料
    var data = options.data || {};
    var dataStr = "";
    for(var key in data){
        dataStr += key+"="+data[key]+"&";
    }
    //將最後一個&擷取掉
    dataStr = dataStr && dataStr.slice(0,-1);

    //ajax
    var xhr = new XMLHttpRequest();
    xhr.open(type,(type=="get"?url+"?"+dataStr:url),async);
    //請求頭
    if(type == 'post'){
        if(contentType == "json"){
            xhr.setRequestHeader('Content-Type','application/json');
        }else{
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        }
    }
    xhr.setRequestHeader('Client-Type','I');
    //請求主體
    xhr.send(type=="get"?null:contentType=="json"?JSON.stringify(data):dataStr);
    //監聽響應狀態的改變
    xhr.onreadystatechange = function(){
        var result = "";
        var contentType = xhr.getResponseheader('Content-Type');
        if(xhr.readyState ==4 && (xhr.status == 200 || xhr.status == 201)){
            //如果伺服器返回的是xml
            if(contentType.indexOf("xml")>-1){
                result = xhr.responseXML;
            }
            //如果伺服器返回的是json
            else if(contentType.indexOf("json")>-1){
                result = JSON.parse(xhr.responseText);
            }else{
                result = xhr.responseText;
            }
            //成功回撥
            options.success && options.success(result);
        }
        //請求不成功,也需要響應完成才作為一個錯誤的請求
        else if(xhr.readyState == 4){
            //如果伺服器返回的是xml
            if(contentType.indexOf("xml")>-1){
                result = xhr.responseXML;
            }
            //如果伺服器返回的是json
            else if(contentType.indexOf("json")>-1){
                result = JSON.parse(xhr.responseText);
            }else{
                result = xhr.responseText;
            }
            //error回撥
            options.error&& options.error(result);
            if(xhr.status == 401 || (xhr.status == 403){
                options.authorize && options.authorize();
            }
        }
    }
}

xAjax.post = function(options){
    options.type = "post";
    xAjax.request(options);
}
xAjax.get = function(options){
    options.type = "get";
    xAjax.request(options);
}

呼叫的話就這樣寫;我覺得還挺方便的

xAjax.post({
    url:"xxxx",
    data:{"name":xj},
    success:function(result){
        //請求成功的操作
    },
    error:function(error){
        //請求失敗的操作
    }
});

判斷是否為空:

xCheckEmpty = function(obj){
    if(obj == null || obj == undefined || obj == ""){
        return true;
    }
    return false;
}
xCheckNotEmpty = function(obj){
    if(xCheckEmpty(obj)){
        return false;
    }
    return true;
}

還沒有整理完,待補充。

相關文章