Javascript setTimeout方法未触发
根据以下方法: 我的ajax调用只触发一次Javascript setTimeout方法未触发,javascript,ajax,Javascript,Ajax,根据以下方法: 我的ajax调用只触发一次 <body> <div id="match-data"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script> jQuery(function($){ fu
<body>
<div id="match-data"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
jQuery(function($){
function obj(){
var duration = 1000;
var tmpFnc = function(){ exec(); };
setTimeout(tmpFnc, duration);
function exec(){
$.ajax({
url: "web_service.php",
data: {
format: 'json'
},
success: function(data){
var resultHTML = "";
var json = $.parseJSON(data);
$.each(json, function(key, val){
var $team = json[key].name;
var $badge = json[key].crestUrl;
var $alt_text = json[key].shortName;
resultHTML += "<p>"+$team;
resultHTML += '<img style="width:100px;height:100px;" src="'+$badge+ '" alt="'+$alt_text+'"/></p>';
// console.log(resultHTML);
});
$("#match-data").append(resultHTML);
}
});
}
};
obj = new obj();
});
</script>
</body>
jQuery(函数($){
函数obj(){
var持续时间=1000;
var tmpFnc=function(){exec();};
设置超时(tmpFnc,持续时间);
函数exec(){
$.ajax({
url:“web_service.php”,
数据:{
格式:“json”
},
成功:功能(数据){
var resultHTML=“”;
var json=$.parseJSON(数据);
$.each(json,函数(key,val){
var$team=json[key].name;
var$badge=json[key].crestur;
var$alt_text=json[key].shortName;
结果TML+=“”+$team;
结果TML+='';
//console.log(resultHTML);
});
$(“#匹配数据”).append(resultHTML);
}
});
}
};
obj=新的obj();
});
我希望它每秒钟重复一次吗?我想你在寻找: 当
duration
为1000
时,它将每隔1秒调用exec
但是,由于您正在进行ajax调用,因此最好先等待服务器响应,然后再等待第二次:
success: function(data) {
// omitted
setTimeout(exec, duration);
}
注意:您的
tmpFnc
功能是不必要的。基本上更改您的代码,如下所示
setInterval(tmpFnc, duration);
....
obj(); //not obj = new obj();
您可以编辑以包含您尝试过的内容吗?同时,最好缩小问题的范围。上帝之母。。。看看另一个函数中的所有函数,另一个函数中的所有函数……我也整理了一下,所有的嵌套方法都是一团糟。谢谢。@cookie我没有投你反对票,但可能是因为你的问题太吵了。在您有一个非常简单的示例之前,删除那些不会导致问题的语句可能会更简单。
setInterval(tmpFnc, duration);
....
obj(); //not obj = new obj();