2015-10-13 59 views
2

我有一個簡單的JS表單,它接受一個搜索詞和一個下拉選項,並根據這些參數返回JSON數據。我相信我遇到的問題是即使intelliJ看到對另一個文件的引用,它也無法處理它('意外令牌錯誤')。JS從本地文件讀取JSON對象

jsFiddle JSON片段:本

var songs = [ 
{"title":"12-Bar Original"      , "writer":"Lennon, McCartney, Harrison and Starkey  ", "vocalist":"Instrumental         "}, 
{"title":"Across the Universe"     , "writer":"Lennon          ", "vocalist":"Lennon          "}, 
{"title":"Act Naturally"      , "writer":"Russell, Morrison       ", "vocalist":"Starkey          "}, 
{"title":"Ain't She Sweet"      , "writer":"Yellen, Ager        ", "vocalist":"Lennon          "}, 
{"title":"All I've Got to Do"     , "writer":"Lennon          ", "vocalist":"Lennon          "}, 
{"title":"All My Loving"      , "writer":"McCartney         ", "vocalist":"McCartney         "}, 
{"title":"All Things Must Pass"     , "writer":"Harrison — —       ", "vocalist":"            "}, 
{"title":"All Together Now"      , "writer":"McCartney, with Lennon      ", "vocalist":"McCartney, with Lennon      "}, 
{"title":"All You Need Is Love"     , "writer":"Lennon          ", "vocalist":"Lennon          "}, 
{"title":"And I Love Her"      , "writer":"McCartney, with Lennon      ", "vocalist":"McCartney         "}]; 

的思考?我確信我錯過了一些愚蠢的東西。欣賞眼睛。謝謝!

+1

這是一個JS代碼,而不是JSON。你如何使用它?通過ajax或smth加載?如果是這樣,請刪除「var songs =」並尾隨「;」。 如果您想要運行JS代碼 - 例如添加一個全局變量「歌曲」,你可以評估文件的文字。您還可以將代碼修改爲模塊並通過RequireJS進行需求,或者只需將該文件加載到腳本標記中即可。 –

+0

@PavelStaseljun - 不,它是完全有效的JSON。 – davidkonrad

+1

Rly? JSON中的字符串「var songs =」代表什麼? –

回答

0

這是因爲您的變量songs已經包含有效的JSON數據,不需要進行解析。如果您的變量持有JSON字符串,則需要使用JSON.parse。這就是爲什麼JSON.parse會引發意外標記錯誤。你可以簡單地擺脫JSON.parse並只使用songs

+0

這對我有意義。該頁面似乎仍然不能訪問任何內容,並在瞬間顯示輸入的文本後刷新。還有什麼我可能會失蹤? – dreamerdiver

+0

這是對你的jsFiddle的更新。我必須刪除HTML中的硬編碼本地文件,爲'songs'添加JSON數據,初始化時調用init()'方法,並在點擊按鈕時阻止默認事件。看看:https://jsfiddle.net/5rf8b5hy/8/。 –

+0

這看起來不錯,還有一些有用的技巧!儘管如此,我仍然遇到了一些問題。並且JSON需要與這個工作處理在同一個文件中嗎? – dreamerdiver