工具類--常用的ajax請求工具

 /**
 * Created by chenyc on 2017/1/16.
 */

//定義資源分離的url地址,全局使用
var url_path =window.location.origin;
 // url_path = url_path.substring(0,url_path.indexOf('/open_portal'));
 //使用代理地址  nginx中共享門戶使用data-share代理
var base_remote=url_path+"/";
var TIME_OUT = 6000000;//登錄超時時間100分鐘 =100(分鐘)*60(秒)*1000(毫秒)
var AJAX_TIME_OUT = 10000;//ajax請求超時時間10秒

/**
 * post請求
 * ajax需要傳token
 * 必須是登陸用戶
 * urlpath:參數路徑
 * parems:參數必須是json格式
 * callback:成功回調
 * callcomplete:請求成功回調方法。
 */
function postAjaxJson(urlpath, parems, callcomplete,callback) {
    //token信息
    var access_token = "";
    if(sessionStorage.getItem('access_token') != undefined && sessionStorage.getItem('access_token') != null){
        access_token = sessionStorage.getItem('access_token');
    }

    var urls = base_remote + urlpath + "?access_token=" + access_token;
    var promise = $.ajax({
        type: 'POST',
        contentType: 'application/json;charset=UTF-8',
        url: urls,
        data: parems,
        async: false,//默認值: true。默認設置下,所有請求均爲異步請求。如果需要發送同步請求,請將此選項設置爲 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成纔可以執行。
        timeout : AJAX_TIME_OUT, //超時時間設置,單位毫秒
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
            if(result.resultCode=='-1'){
                swal({
                  title: "會話失效!",
                  text: "用戶會話失效, 請重新登錄",
                  type: "warning",
                  showCancelButton: false,
                  confirmButtonColor: "#DD6B55",
                  confirmButtonText: "確定",
                  closeOnConfirm: false
                },
                function(){
                    window.location.href = window.location.origin + "/open_portal/main.html";
                    swal.close();
                });
            }
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
};
/**
 * post請求
 * ajax不需要傳token
 * 非登陸用戶
 * urlpath:參數路徑
 * parems:參數必須是json格式
 * callback:回調
 * callcomplete:請求成功回調方法。
 */
function postAjaxJson2(urlpath, parems, callcomplete, callback) {
    var urls = base_remote + urlpath;
    var promise = $.ajax({
        type: 'POST',
        contentType: 'application/json;charset=UTF-8',
        url: urls,
        async: false,
        timeout : AJAX_TIME_OUT, //超時時間設置,單位毫秒
        data: JSON.stringify(parems),
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
};

/**
     * get請求
     * ajax不需要傳token
     * 非登陸用戶
     * urlpath:參數路徑
     * parems:參數
     * callback:回調
     * callcomplete:當請求完成之後調用這個函數,無論成功或失敗。
     */
    function getAjaxJson2Loading(urlpath, parems, callcomplete, callback) {
        var urls = base_remote + urlpath ;
        var promise = $.ajax({
            type: 'GET',
            url: urls,
            data: parems,
            timeout : AJAX_TIME_OUT, //超時時間設置,單位毫秒
            async: false,
            dataType: 'json',
            beforeSend: function () {
                $(".dm_content").append('<div id="pload" class="loading"></div>');
            },
            complete: function () {
                $("#pload").remove();
            },
            success: function(result) {
                callcomplete(result);
            },
            error: function(httpError) {
                console.log('httpError=' + JSON.stringify(httpError));
                //當發生異常時觸發(alert('處理異常!');)
                handlBackInfo(-2, '請求異常,請重試。');
            },
            promise: function(result) {
                //result.data即服務端返回的數據對象(響應成功)
                handlBackInfo(result.data.resultCode, result.data.resultMsg);
                callback(result.data);
            }
        })
    }

/**
 * get請求
 * ajax需要傳token
 * 必須是登陸用戶
 * urlpath:參數路徑
 * parems:參數
 * callback:回調
 * callcomplete:當請求完成之後調用這個函數,無論成功或失敗。
 */
function getAjaxJson(urlpath, parems, callcomplete,errorCallBack,callback) {
    var access_token = "";
    if(sessionStorage.getItem('access_token') != undefined && sessionStorage.getItem('access_token') != null){
        access_token = sessionStorage.getItem('access_token');
    }
    var urls = base_remote + urlpath + "?access_token=" + access_token;
    var promise = $.ajax({
        type: 'GET',
        url: urls,
//        async: false,
        data: parems,
        timeout : AJAX_TIME_OUT, //超時時間設置,單位毫秒
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
            if(result.resultCode=='-1'){
                swal({
                  title: "會話失效!",
                  text: "用戶會話失效, 請重新登錄",
                  type: "warning",
                  showCancelButton: false,
                  confirmButtonColor: "#DD6B55",
                  confirmButtonText: "確定",
                  closeOnConfirm: false
                },
                function(){
                    window.location.href = window.location.origin + "/open_portal/main.html";
                    swal.close();
                });
            }
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
            errorCallBack(httpError);
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
}
/**
 * get請求
 * ajax不需要傳token
 * 非登陸用戶
 * urlpath:參數路徑
 * parems:參數
 * callback:回調
 * callcomplete:當請求完成之後調用這個函數,無論成功或失敗。
 */
function getAjaxJson2(urlpath, parems, callcomplete, callback) {
    var urls = base_remote + urlpath ;
    var promise = $.ajax({
        type: 'GET',
        url: urls,
        data: parems,
        timeout : AJAX_TIME_OUT, //超時時間設置,單位毫秒
        async: false,
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
}
/**
 * get請求
 * ajax不需要傳token
 * 非登陸用戶
 * urlpath:參數路徑
 * parems:參數
 * callback:回調
 * callcomplete:當請求完成之後調用這個函數,無論成功或失敗。
 */
function getAsyncAjaxJson2(urlpath, parems, callcomplete, callback) {
    var urls = base_remote + urlpath ;
    var promise = $.ajax({
        type: 'GET',
        url: urls,
        data: parems,
        async: true,
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
}

 

/**
 * 處理返回信息(包括錯誤信息)
 * @param msgCode
 * @param msgInfo
 */
function handlBackInfo(msgCode, msgInfo) {
//    alert(msgCode+","+msgInfo);
//    console.debug(msgCode+","+msgInfo);
}

/**
 * 登錄請求
 * @param {Object} url 地址
 * @param {Object} params 參數
 * @param {Object} callcomplete 當請求完成之後調用這個函數,無論成功或失敗。
 * @param {Object} callback 回調方法
 */
function loginAjax(url,params,callcomplete,callback){
    var urls = base_remote +url;
    var promise = $.ajax({
        type: 'POST',
        url: urls,
        data: params,
        dataType: 'json',
        success: function(result) {
            callcomplete(result);
        },
        error: function(httpError) {
            console.log('httpError=' + JSON.stringify(httpError));
            alert("用戶名或密碼錯誤");
            //當發生異常時觸發(alert('處理異常!');)
            handlBackInfo(-2, '請求異常,請重試。');
        },
        promise: function(result) {
            //result.data即服務端返回的數據對象(響應成功)
            handlBackInfo(result.data.resultCode, result.data.resultMsg);
            callback(result.data);
        }
    })
}

/**
 * 單點登錄
 * @param {Object} url 地址
 * @param {Object} params 參數
 * @param {Object} callcomplete 當請求完成之後調用這個函數,無論成功或失敗。
 * @param {Object} callback 回調方法
 */
function singleLogin(urlpath, parems, callcomplete, callback){
    var login_url = window.location.href;
    var base_remote1 = login_url.substring(0,login_url.indexOf('/data_share_portal')) + "/auth-web/";
    //單點登錄接口地址
    var urls = base_remote1 +urlpath+"?token="+parems.token+"&appId="+parems.appId;
    window.open(urls);
}

function returnLogin(){
 var currentTime = new Date();

  if(!isLogin()){
       swal({
      title: "提示!",
      text: "用戶未登錄或登錄已過期,請登錄後在操作!",
      type: "error",
      showCancelButton: false,
      confirmButtonColor: "#DD6B55",
      confirmButtonText: "確定",
      closeOnConfirm: false
    },
       function(){
               window.location.href = window.location.origin + "/open_portal/main.html";
            swal.close();

       });
       return false;
  }
  else{
      return localStorage.login_person;
  }
}

function isLogin(){
     var currentTime = new Date();
    if(typeof(localStorage.login_person)=='undefined' ||
    typeof(JSON.parse(localStorage.login_person).resultData)=='undefined'||
    currentTime.getTime()>=(JSON.parse(localStorage.login_person).resultData.createTime+TIME_OUT)){
        return false;
    }
    else{
        return true;
    }
}

//根據id刪除方法
function delOption(uri,ids,fn){
    var isSuccess = false;
    //批量刪除操作
    var parem;
    swal({
        title: "確定要刪除麼?",
        text: "數據刪除後不可恢復,請謹慎操作!",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "確定",
        cancelButtonText: "取消",
        closeOnConfirm: false
    },
    function() {
        if(ids instanceof Array) {
            for(var i = 0; i < ids.length; i++) {
                parem = {
                    id: ids[i]
                };
                getAjaxJson(uri, parem, function(result) {
                    if(result.resultCode == '0') {
                        isSuccess = true;
                    } else {
                        isSuccess = false;
                    }

                    if(isSuccess) {
                        swal({
                                title: "成功!",
                                text: "該數據已經成功刪除",
                                type: "success"
                            },
                            function() {
                                if(typeof(fn)!='undefined'){
                                    fn;
                                }else{
                                    location.reload();
                                }
                                
                            });
                    } else {
                        swal({
                                title: "失敗!",
                                text: '數據刪除異常',
                                type: "error"
                            },
                            function() {
                                 if(typeof(fn)!='undefined'){
                                    fn;
                                }else{
                                    location.reload();
                                }
                            });
                    }
                });

            }
        } else {
            parem = {
                id: ids
            };
            getAjaxJson(uri, parem, function(result) {
                if(result.resultCode == '0') {
                    swal({
                            title: "成功!",
                            text: "該數據已經成功刪除",
                            type: "success"
                        },
                        function() {
                            if(typeof(fn)!='undefined'){
                                    fn;
                                }else{
                                    location.reload();
                                }
                        });
                } else {
                    swal({
                            title: "失敗!",
                            text: '數據刪除異常',
                            type: "error"
                        },
                        function() {
                            if(typeof(fn)!='undefined'){
                                fn;
                            }else{
                                location.reload();
                            }
                        });
                }
            });
        }

    });
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章