setTimeout方法没有触发

时间:2015-04-17 14:19:26

标签: javascript ajax

基于以下方法: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> 

我希望它每秒重复一次?

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找setInterval

setInterval(exec, duration);

execduration时,我会每1秒致电1000

但是,由于您正在进行ajax调用,因此最好在等待一秒之前等待服务器先响应:

success: function(data) {
    // omitted
    setTimeout(exec, duration);
}

注意:您的tmpFnc功能是不必要的。

答案 1 :(得分:0)

基本上更改您的代码,如下所示

 setInterval(tmpFnc, duration);
 ....
 obj(); //not obj = new obj();