iT邦幫忙

0

Uncaught TypeError: Cannot read properties of undefined (reading 'all') at newdate

  • 分享至 

  • xImage

請問各位學長學姐
我不知道那錯了
有時它會報錯(二十次有一次)
謝謝

json data:
{
   "time":"11:31:14",
   "date":"2021年12月09日 (星期四)",
   "lunar":"辛丑,牛年冬月初六",
   "nextholiday":"聖誕節",
   "recipe":{ 
      "date":"2021-12-09",  
      "all":"奶 一 杯 及 餅 乾",
      "s1":"牛奶麥皮<br>Pizza",
      "s2":"土魷馬蹄蒸肉餅<br>時菜<br>節瓜陳腎茨實瘦肉湯",
      "s3":"菊花茶<br>卷旦",
      "s4":"青瓜雲耳<br>炒蝦仁<br>時菜",
      "s5":"奶 + 麥包三文治",   
   },  
}


    var data = [];
    var getdata = function () {
        $.getJSON('/data', function (rs) {
            data = rs;
        });
        setTimeout(getdata, 1000 * 60 * 5);
    }

 var newdate = function () {
        $(".all").text(data.recipe.all); 
 }

	getdata();  

        setTimeout(function () {
            newdate();
        }, 2000); //這次我等getdata後再執行newdata,但錯誤都是有時會出現
carlkyo iT邦新手 5 級 ‧ 2021-12-09 12:21:58 檢舉
不知道是不是all是reserved words
我改改看
fillano iT邦超人 1 級 ‧ 2021-12-09 12:36:15 檢舉
all沒印象他是保留字
carlkyo iT邦新手 5 級 ‧ 2021-12-10 09:57:35 檢舉
getdata每5分鐘才執行一次
另外一個function才是跟著5分鐘更新一次
但newdate是一天才會更新一次(因為有影片,如果跟著5分鐘更新一次會打斷影片的播放)
所以我才把getdata回傳的資料全局化,再給其他function用
notepad++會強調保留字
謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
fillano
iT邦超人 1 級 ‧ 2021-12-09 12:41:36

newdate()執行時機放到getJSON的callback,保證取得到。

carlkyo iT邦新手 5 級 ‧ 2021-12-14 08:43:18 檢舉

謝謝學長
global可能沒callback穩定
我試試改用callback好了
merry christmas and happy new year 2022

0
screenleon
iT邦新手 1 級 ‧ 2021-12-10 09:23:43

var getdata = function () {
$.getJSON('/data', function (rs) {
data = rs;
newdate();
});
}

因為你爬的資料不確定甚麼時候回來,為了確保取得資料後才更新,請在callback function中更新資訊

我要發表回答

立即登入回答