文章出處

//ajax公共方法,zs 2017-06-14
$.extend({
    //比jq的ajax多了的參數:
    //salert是否在請求成功后彈出后臺的SuressStr字段值
    //ealertStr:請求出錯
    majax: function (a) {
        if (typeof a === "object") {
            var defaultOption = {
                url: "",
                async: true,
                cache: true,//dataType 為 script 和 jsonp 時默認為 false。設置為 false 將不緩存此頁面。
                data: null,
                type: "get",
                timeout: null,
                dataType: "",//預期服務器返回的數據類型
                contentType: "application/x-www-form-urlencoded",//發送信息至服務器時內容編碼類型。
                beforeSend: function (XMLHttpRequest) {
                    //  console.log("請求開始");
                },
                //dataFilter: function (data, type) {
                //    console.log("請求成功success之前");
                //dataFilter給Ajax返回的原始數據的進行預處理的函數。它的調用在success之前
                //測試1.10.2和2.0.3版本的js如果存在此方法則success不會執行。會直接到error方法里,雖然狀態碼是200
                //},
                success: function (data, textStatus, jqXHR) {
                    // console.log("請求成功");
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    //  console.log("請求出錯");
                },
                complete: function (XMLHttpRequest) {
                    //在error或success之前執行
                    // console.log("無論成功錯誤我都存在");
                },
                context: null,//這個對象用于設置 Ajax 相關回調函數的上下文。也就是說,讓回調函數內 this 指向這個對象
                global: true,//是否觸發全局 AJAX 事件。默認值: true。設置為 false 將不會觸發全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。
                ifModified: false,//僅在服務器數據改變時獲取新數據。默認值: false。使用 HTTP 包 Last-Modified 頭信息判斷。在 jQuery 1.4 中,它也會檢查服務器指定的 'etag' 來確定數據沒有被修改過。
                jsonp: "",
                jsonpCallback: "",
                username: null,
                password: null,
                processData: true,
                scriptCharset: "",
                traditional: false,// 默認的話,traditional為false,即jquery會深度序列化參數對象,不深度序列化的例子:data:{ p: ["123", "456", "789"] },p會序列化成 p=123&p=456&p=456。深度序列化例子:data:{foo:["bar1", "bar2"]} 轉換為 '&foo=bar1&foo=bar2'。
                //xhr: function () {
                //測試會導致返回的status為0
                //},
                //自加參數
                eAlertStr: "",//請求出錯彈出的內容
                eAlertStrOrder: false,//eAlertStr彈出的順序,false表示在error方法執行完畢之后彈出
                sAlert: false,//請求成功后是否彈出后臺返回的SuccessStr字段的內容,必須確定后臺返回的是能序列化的json
                sAlertOrder: false,//sAlert彈出的順序,false表示在success方法執行完畢之后彈出
                execomplete: function (data, textStatus, jqXHR) {
                    //success或error方法執行完畢,success時該方法的參數才有值
                    // console.log("方法執行完畢了");
                }
            }
            for (i in a) {
                defaultOption[i] = a[i];
            }
            $.ajax({
                url: defaultOption.url,
                async: defaultOption.async,
                cache: defaultOption.cache,
                data: defaultOption.data,
                type: defaultOption.type,
                timeout: defaultOption.timeout,
                dataType: defaultOption.dataType,
                contentType: defaultOption.contentType,
                beforeSend: function (XMLHttpRequest) {
                    defaultOption.beforeSend(XMLHttpRequest);
                },
                //dataFilter: function (data, type) {
                //    defaultOption.dataFilter(data, type);
                //},
                success: function (data, textStatus, jqXHR) {
                    var i = true;
                    var datas = data;
                    if (defaultOption.sAlert && typeof data != "object") {
                        datas = JSON.parse(data);
                    }
                    if (defaultOption.sAlert && defaultOption.sAlertOrder && datas.SuccessStr != null && datas.SuccessStr != "undefined" && $.trim(datas.SuccessStr) != "") {
                        $.gritter.add({
                            title: "提示",
                            text: datas.SuccessStr,
                            class_name: 'gritter-success '
                        });
                        i = false;
                    }
                    if (!i) {
                        setTimeout(function () {
                            defaultOption.success(data, textStatus, jqXHR);
                            defaultOption.execomplete(data, textStatus, jqXHR);
                        }, 400);
                    } else {
                        defaultOption.success(data, textStatus, jqXHR);
                        if (i && defaultOption.sAlert && datas.SuccessStr != null && datas.SuccessStr != "undefined" && $.trim(datas.SuccessStr) != "") {
                            $.gritter.add({
                                title: "提示",
                                text: datas.SuccessStr,
                                class_name: 'gritter-success '
                            });
                        }
                        setTimeout(function () {
                            defaultOption.execomplete(data, textStatus, jqXHR);
                        }, 400);
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    var i = true;
                    if (defaultOption.eAlertStrOrder && defaultOption.eAlertStr != null && defaultOption.eAlertStr != "undefined" && $.trim(defaultOption.eAlertStr) != "") {
                        $.gritter.add({
                            title: "提示",
                            text: defaultOption.eAlertStr,
                            class_name: 'gritter-error '
                        });
                        i = false;
                    }
                    if (!i) {
                        setTimeout(function () {
                            defaultOption.error(XMLHttpRequest, textStatus, errorThrown);
                            defaultOption.execomplete(data, textStatus, jqXHR);
                        }, 400);
                    } else {
                        defaultOption.error(XMLHttpRequest, textStatus, errorThrown);
                        if (i && defaultOption.eAlertStr != null && defaultOption.eAlertStr != "undefined" && $.trim(defaultOption.eAlertStr) != "") {
                            $.gritter.add({
                                title: "提示",
                                text: defaultOption.eAlertStr,
                                class_name: 'gritter-error '
                            });
                            setTimeout(function () {
                                defaultOption.execomplete(data, textStatus, jqXHR);
                            }, 400);
                        }
                    }
                },
                complete: function (XMLHttpRequest) {
                    defaultOption.complete(XMLHttpRequest);
                },
                context: defaultOption.context,
                global: defaultOption.global,
                ifModified: defaultOption.ifModified,
                jsonp: defaultOption.jsonp,
                jsonpCallback: defaultOption.jsonpCallback,
                username: defaultOption.username,
                password: defaultOption.password,
                processData: defaultOption.processData,
                scriptCharset: defaultOption.scriptCharset,
                traditional: defaultOption.traditional,
                //xhr: function () {
                //    defaultOption.xhr();
                //}
            });
        } else {
            console.log("參數格式不正確");
        }
    },
    mpost: function (url, data, callback, type) {
        if (jQuery.isFunction(data)) {
            type = type || callback;
            callback = data;
            data = undefined;
        }
        return $.majax({
            url: url,
            type: "post",
            dataType: type,
            data: data,
            success: callback
        });
    },
    mget: function (url, data, callback, type) {
        if (jQuery.isFunction(data)) {
            type = type || callback;
            callback = data;
            data = undefined;
        }
        return $.majax({
            url: url,
            type: "get",
            dataType: type,
            data: data,
            success: callback
        });
    },
});

成功的提示的插件為 $.gritter自行引用,也可以自己改成你們項目里的,注意下我這提示用的返回字段也要更改成你們項目的

轉載注明:http://www.cnblogs.com/zszs/p/7016606.html


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()