zepto Ajax 废除一个ajax请求

如何废除一个ajax请求 ----abort()方法
需求/场景:点击获取验证码的按钮,用户十秒时候可以再次获取,当十秒过后第一次请求没有返回,用户再次点击获取
然后因为网速好或者其他原因,两次请求同时返回,该怎么解决

disabled属性   设置表单项或者按钮不可再点击或者操作;但是只是针对click事件,而并没有针对touch事件作出处理。

客户端请求:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title>ajax容易忽视的重点</title>
		<style type="text/css">
			#btn{
				width: 200px;
				height: 200px;
				background: red;
				border-radius: 20px;
				text-align: center;
				line-height: 200px;
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<button id="btn">按钮</button>
		<script src="../js/zepto.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/touch.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
            $(function () {
                var xmlHttp = null;//初始化xmlHttp对象
                var isSend = false;//初始化判断按钮是否可以点击
                $('#btn').on('touchstart', function () {
                    if(isSend === true){//如果不能点击,直接返回
                        return;
                    }
                    $(this).css('background', 'gray');
                    isSend = true;//修改为不能点击
                    if(xmlHttp === null){//如果用户首次点击,发送请求
                        xmlHttp = sendXmlHttp();
                    }else{
                      //10s后用户没收到验证码,再次点击,再次点击的时候取消上一次请求
                        xmlHttp.abort();
                        xmlHttp = sendXmlHttp();//再次发送最新的请求
                    }
                    setTimeout(function () {
                        $('#btn').css('background', 'red');
                        isSend = false;//10s以后用户可以再次点击
                    }, 10000);

                });
                //发送ajax请求的函数;
                function sendXmlHttp() {
                    var xmlHttp = null;

                    xmlHttp = $.ajax({
                        type : 'GET',
                        url : 'http://localhost:3000/',
                        dataType : 'json',
                        success : function (msg) {
                            console.log(msg);
                        },
                        error : function (error) {
                            console.log(error);
                        }
                    });

                    console.log("xmlHttp:"+xmlHttp)
                    return xmlHttp;
                }
            });
		</script>
	</body>
</html>

 

服务端:

router.get('/', function(req, res, next) {
    var arr = [1,2,3,4,5];//模拟数据
    res.set('Access-Control-Allow-Origin','*');
    setTimeout(function () {
        res.send(arr);
    },15000); //模拟网络缓慢 15s后返回结果
});

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值