基于以下方法:http://www.ajaxblender.com/article-sources/jquery/call-settimeout-inside-of-object/index.html
我的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($){
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>
我希望它每秒重复一次?
答案 0 :(得分:1)
我认为您正在寻找setInterval:
setInterval(exec, duration);
当exec
为duration
时,我会每1秒致电1000
。
但是,由于您正在进行ajax调用,因此最好在等待一秒之前等待服务器先响应:
success: function(data) {
// omitted
setTimeout(exec, duration);
}
注意:您的tmpFnc
功能是不必要的。
答案 1 :(得分:0)
基本上更改您的代码,如下所示
setInterval(tmpFnc, duration);
....
obj(); //not obj = new obj();