Javascript 函数用于捕获在某些情况下不工作的正确天数

Javascript 函数用于捕获在某些情况下不工作的正确天数,javascript,Javascript,我希望这个问题有意义。我的javascript相当弱。然而,我有一个脚本,用于通过apikey从我们的gyms软件中提取信息。基本上,每天晚上7点,如果训练已经发布,我想让脚本抓取它。如果是晚上7点之前或之后,而明天的训练不可用,只需保留前几天的训练 脚本似乎在大部分时间都能正常工作,但在中午之前就会出现问题。例如,今天上午10:45,脚本本应捕获2017年1月21日的训练,但出于某种原因,它遇到了错误代码条款,并将训练从2017年1月20日开始 很抱歉出现了文字墙,但基本上是希望有人能告诉我我

我希望这个问题有意义。我的javascript相当弱。然而,我有一个脚本,用于通过apikey从我们的gyms软件中提取信息。基本上,每天晚上7点,如果训练已经发布,我想让脚本抓取它。如果是晚上7点之前或之后,而明天的训练不可用,只需保留前几天的训练

脚本似乎在大部分时间都能正常工作,但在中午之前就会出现问题。例如,今天上午10:45,脚本本应捕获2017年1月21日的训练,但出于某种原因,它遇到了错误代码条款,并将训练从2017年1月20日开始

很抱歉出现了文字墙,但基本上是希望有人能告诉我我的脚本中有什么/如果有问题。我认为问题所在的领域从“今天=新日期()开始”

多谢各位

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script> 
    function loadFormattedWOD(selector, apiKey, date, location, program) { 
        $.ajax({ 
            url: 'https://app.wodify.com/API/WODs_v1.aspx', 
            data: {
                apiKey: apiKey, 
                date: date, 
                location: location, 
                program: program, 
                type: "json"
            },  
            dataType: "json",  
            success: function(data){
                try {
                if(data && data.RecordList.APIWod.FormattedWOD) {  
                  $(selector).html(data.RecordList.APIWod.FormattedWOD);
                return "worked";

                }
                } catch(err) {
                return null;
                }               
            }
        });  
    }
function loadFormattedWOD2(selector, apiKey, date, location, program) { 
        $.ajax({ 
            url: 'https://app.wodify.com/API/WODs_v1.aspx', 
            data: {
                apiKey: apiKey, 
                date: date, 
                location: location, 
                program: program, 
                type: "json"
            },  
            dataType: "json",  
            success: function(data){  
                if(data && data.RecordList.APIWod.FormattedWOD) {  
                  $(selector).html(data.RecordList.APIWod.FormattedWOD);  
                }  
            }  
        });  
    }   

 today = new Date()
if (today.getHours() >=19) {today.setDate(today.getDate()+1);}
  else {today.setDate(today.getDate()+0);}
    var dateString = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate(); 
    if(loadFormattedWOD("#wodbody", "myapikey", dateString, "My Crossfit", "CrossFit") == null) {
    retryWithToday();
    }
function retryWithToday() {
today.setDate(today.getDate() - 1);
var dateString = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate(); 
    loadFormattedWOD2("#wodbody", "myapikey", dateString, "My Crossfit", "CrossFit");
}   
 </script> 
<div id="wodbody" />

函数loadFormattedWOD(选择器、apiKey、日期、位置、程序){
$.ajax({
网址:'https://app.wodify.com/API/WODs_v1.aspx', 
数据:{
阿皮基:阿皮基,
日期:日期:,
地点:地点,,
节目:节目,,
类型:“json”
},  
数据类型:“json”,
成功:功能(数据){
试一试{
if(data&&data.RecordList.APIWod.FormattedWOD){
$(选择器).html(data.RecordList.APIWod.FormattedWOD);
返回“已工作”;
}
}捕捉(错误){
返回null;
}               
}
});  
}
函数loadFormattedWOD2(选择器、apiKey、日期、位置、程序){
$.ajax({
网址:'https://app.wodify.com/API/WODs_v1.aspx', 
数据:{
阿皮基:阿皮基,
日期:日期:,
地点:地点,,
节目:节目,,
类型:“json”
},  
数据类型:“json”,
成功:函数(数据){
if(data&&data.RecordList.APIWod.FormattedWOD){
$(选择器).html(data.RecordList.APIWod.FormattedWOD);
}  
}  
});  
}   
今天=新日期()
如果(today.getHours()>=19){today.setDate(today.getDate()+1);}
else{today.setDate(today.getDate()+0);}
var dateString=today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
if(loadFormattedWOD(“#wodbody”、“myapikey”、日期字符串、“我的交叉拟合”、“交叉拟合”)==null){
今天复述();
}
函数retryWithToday(){
today.setDate(today.getDate()-1);
var dateString=today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
loadFormattedWOD2(“#wodbody”、“myapikey”、日期字符串、“我的交叉拟合”、“交叉拟合”);
}   
$.ajax()
是异步的,这意味着您的
返回“已工作”loadFormattedWOD()
实际上并没有返回code>。要解决此问题,请使用
retryWithToday
作为对
loadFormattedWOD()
的回调:


根据[这个答案](,获取明天日期的正确方法是
a=newdate((newdate())。valueOf()+1000*3600*24)
。这将阻止日期,例如每月的第32天。谢谢你,这在看到你的迭代后是有意义的,比我试图完成的要干净得多。非常感谢。我还将调整我的日期参数,以避免任何冲突。
function loadFormattedWOD(selector, apiKey, date, location, program, callback) { 
    $.ajax({ 
        ...
        success: function(data){
            try {
                if (data && data.RecordList.APIWod.FormattedWOD) {  
                    $(selector).html(data.RecordList.APIWod.FormattedWOD);
                    console.log('worked');
                }
            } catch(err) {
                if (callback) callback();
            }               
        }
    });  
}
...
loadFormattedWOD("#wodbody", "myapikey", dateString, "My Crossfit", "CrossFit", retryWithToday);
function retryWithToday() {
    today.setDate(today.getDate() - 1);
    var dateString = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate(); 
    loadFormattedWOD("#wodbody", "myapikey", dateString, "My Crossfit", "CrossFit");
}