关于自动发出ajax请求与setTimeout 和setTimeInterval?

关于自动发出ajax请求与setTimeout 和setTimeInterval?

http://img1.sycdn.imooc.com//climg/5c3b256f0001fcd912920613.jpg


http://img1.sycdn.imooc.com//climg/5c3b26c000013b0210490523.jpg

视频里的老师说可以封装成方法,不断请求,但是setTimeout 明明是只执行一次,如何不断执行?

用setTimeInterval?但是将文中的setTimeout换成setTimeInterval,顶多也是执行无数次 setTimeout里的回调函数,请问:

  1. 那老师说可以封装成函数无数次调用是怎么回事儿?

  2. 能大概说下这种无数次请求如何写么,顺便问下当ajax成功时,如何停止重复?

  3. 能不能让视频里的老师说话清楚点,声音大点,实在是。。。听不懂他说话,对了!我用一倍速,还是被大舌头打败了?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

您好,是将ajax封装为一个方法,然后让函数自身再次调用 setTimeout()。例如将ajax封装为函数test,那么就可以为setTimeout("test()",1000);。参考如下:

<!doctype html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<script src='http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js'></script>
</head>
<body>
<button id='bid' onClick="test()">test</button>
<script>
// jQuery.ajax(url,[settings]) error success
function test(){
$.ajax({
url:'test5.php',
dataType:'json',
type:'GET',
timeout:2000,//2s
success:function(data,status){
alert(data);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
//网络连接比较慢
if(textStatus === 'timeout'){
alert('请求超时');
setTimeout("test()",2000);
}
}
});
}
</script>
</body>
</html>

ajax执行成功为success,方法中输出提示语句之后就会停止。

祝学习愉快!

  • 轩辕小齐V 提问者 #1
    这里会不会有一个问题,递归是一层一层解决?问题,比如递归了20层后成功那么请问下,之前的19层是不是要在之后一一继续执行?此外在success:function中不用设置跳出机制?还有一点27行有一个括号吧?它的另一半在哪里?是希望这个test函数为(function(){})()的模式?自动调用?话说这个函数叫啥来着?你们是不是应该讲讲不然jQuery我们一堆不会的代码,这里貌似也没执行test函数
    2019-01-16 12:18:49
  • 好帮手慕查理 回复 提问者 轩辕小齐V #2
    您好,此处的递归函数在最后执行,那么每次执行完之后相当于已经执行到程序底部,那么再往下是没有内容需要执行的。success中不用跳出机制。27行并不缺少括号,test函数的格式为function test(){},调用test函数的操作是在按钮上:onClick="test()"。祝学习愉快!
    2019-01-16 17:47:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师