close

- Keywords -

1. 將JSON從外部導入/使用本機的JSON

2. 使用JSON的資料


 

此文章為記錄菜鳥coding歷程,若能提點還請各路大神回覆~

 

在最一開始還沒決定要用JSON方式紀錄題庫時,我想到的問題是「如果要做比對,是不是要在後端儲存資料,以便前端將資料傳向後端做比對?」

後來經提點,才知道只要用JSON方式做資料儲存與處理,接下來使用 JS/jQuery 就能做簡單比對了。

 

問題一:如何將JSON檔從外部導入/使用本機的JSON(參考對策:玩具烏托邦:用 jQuery 無痛讀檔、顯示 

(在非常新手的狀態中,拿去餵狗的關鍵字真的是無奇不有,雖然知道 Stack Overflow 會有很多相類似的問題,不過我實在是不確定我的問題到底出在哪......)

由於整個程式在使用時會大量更動JSON的資料,所以選參考對策中的第二種方式來讀Local的JSON。

 

衍伸問題:

1. 為什麼我怎樣都抓不到JSON?

注意連結網址或JSON資料類型有沒有錯。(新手常出現的問題,哭)

2. 為什麼我開了localhost,做的更動都沒有反應?

要注意快取。

3. $.ajax 跟 $.getJSON 同樣能做到,那麼要選哪個?

尚未參透,但目前看來 $.ajax 能控制得比較多(像是傳輸類型要是get還是post),但像此次在做的無需考慮資料保密等,所以我直接使用 $.getJSON 。呼叫未來的自己在未來能夠好好解釋這些差別。

 

最後輸出:

    $.getJSON("js/test.json", function(result){
        vocaData = result;
        init();
    });

 

問題二:JSON導入後,如何使用資料?

最初我在上述的程式碼前面宣告了一個var名為vocaData,作為getJSON後將資料裝進去的變數,結果在外部叫vocaData的時候出現undefined,貌似只能在getJSON裡面動用資料,因此我剛開始還把接下來所有程式碼全部寫在getJSON裡面(掩面),即使我知道這是一件又蠢又醜的事情,但我還能怎麼辦~~~~~

結果就如上所見的程式碼中,我在讀到JSON之後把result帶入vocaData中,又直接呼叫了另一個function init();

在inti()裡,我可以使用變數 vocaData 的資料,進而完成後續的功能。

 


 

光是要把本地JSON導入與使用,就讓我的頭腦燃燒了好幾天,老實說我很怕一直找「解決方法」反而會變成囫圇吞棗,知其然而不知其所以然。但是沒辦法,只有碰到問題的時候才會去思考問題的本身是什麼,如果現在的觀念有錯,就希望未來的我有一天能夠回頭來為現在的我好好解答。

還有,其實剛開始我的code非常地亂,還好有個大神男友不厭其煩教我做code review...

arrow
arrow
    文章標籤
    javascript JSON jquery
    全站熱搜

    Ter 發表在 痞客邦 留言(0) 人氣()