Ajax设置超时时间,Ajax请求延迟提示

Ajax参数API参考:https://www.w3school.com.cn/jquery/ajax_ajax.asp

方式一
设置时间超过,断开请求连接

/**
 * ajax接口----------------------------------------------------------------------------
 * @param url 请求路径
 * @param data 请求参数
 * @param type 请求方式
 * @param callbak 成功回调
 * @param dataType 返回格式类型
 * @returns
 */
function getAjax(url, data, type, callbak, dataType){
	var ajaxObj = $.ajax({
		url: url, // 请求的URL
		timeout: 1000*10, // 超时时间设置,单位毫秒
		type : type || 'get', // 请求方式,get或post
		data: data, // 请求所传参数,json格式
		dataType: dataType || 'json',// 返回的数据格式
		success: function(res){ // 请求成功的回调函数
			if(callbak){// 回调返回值
				callbak(res);
			}
		},
		complete: function(XMLHttpRequest, status){ // 请求完成后最终执行参数
			if(status == 'timeout'){// 超时, status 还有 success, error等值的情况
				ajaxObj.abort(); // 关闭ajax请求
				if(callbak){// 回调提示
					callbak({success: false, msg: "操作失败,接口请求超时!"});
				}
			}else if(status == 'error'){// 超时, status 还有 success, error等值的情况
				ajaxObj.abort(); // 关闭ajax请求
				if(callbak){// 回调提示
					callbak({success: false, msg: "操作失败,接口请求错误!"});
				}
			}
		}
	});
}

方式二
请求延迟提示,非断开连接

var AJAX={
	contentType:{
		JSON:"application/json;charset=UTF-8",
		FORM:"application/x-www-form-urlencoded"
	}
}
/**
 * ajax请求封装函数-----------------------------------------------------------------------
 * 
 * @param d 请求参数对象
 */
function ajax(d) {
	layui.use("layer", function () {
		var layer = layui.layer, index;
		$.ajax({
			url: (function () { // 使用立即执行函数
				if (d.url.indexOf("?") != -1) {
					return d.url + "&_=" + $.now()
				} else {
					return d.url + "?_=" + $.now()
				}
			})(),
			type: d.type || "GET",
			dataType: d.dataType || "JSON",
			data: (function () {
				if (d.isJSON !== undefined && d.isJSON) {
					return JSON.stringify(d.params) || {}
				}
				return d.params || {}
			})(),
			async: d.async || true,
			beforeSend: d.beforeSend || function () {// 发送请求
				index = layer.load(1, {time: 10 * 1000, shade: [0.01, '#ffffff']}, function () {
					console.log("服务请求延迟过大...当前超时时间为10S");
				});
			},
			contentType: d.contentType || AJAX.contentType.JSON,
			success: function (r) { // 请求成功
				d.success.call(this, r);
			},
			error: function (e) {// 请求错误
				let json = JSON.parse(e.responseText);
				if (json.success){
					d.success.call(this, json);
				}else {
					layer.msg("请求异常!");
				}
				if (index != undefined) {
					layer.close(index);
				}
			},
			complete: d.complete || function () {// 请求完成
				if (index != undefined) {
					layer.close(index);
				}
			}
		})
	});
}

版权声明:本文为weixin_43992507原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。