Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setTimeout方法未触发_Javascript_Ajax - Fatal编程技术网

Javascript setTimeout方法未触发

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

根据以下方法:

我的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> 

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();