2015-10-13 98 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