防止ajax重複提交

以下方法是在不刷新請求的情況下同一請求提交一次,若有其它要求可在以下注釋掉的方法處修改。

(function ($) {
        var pendingRequests = {};
        // 所有ajax請求的通用前置filter
        $.ajaxPrefilter(function (options, originalOptions, jqXHR) {

            // 不重複發送相同請求
            var key = generatePendingRequestKey(options);
            if (!pendingRequests[key]) {
                //storePendingRequest(key, jqXHR);
                pendingRequests[key] = jqXHR;
            } else {
                // or do other
                jqXHR.abort();
            }

            var complete = options.complete;
            options.complete = function (jqXHR, textStatus) {
                // clear from pending requests
                // pendingRequests[key] = null;
                //延遲5秒清空數據
                /*setTimeout(function(){
                    delete pendingRequests[key];
                },5000);*/
                if ($.isFunction(complete)) {
                    complete.apply(this, arguments);
                }
            };
        });

        function generatePendingRequestKey(opts) {
            var url = opts.url;
            var type = opts.type;
            var data = opts.data;
            var str = url + type;
            if (data) {
                str += data;
            }
            return str;
        }
    }(jQuery));

一篇很好的文章

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