我的$ .getJSON似乎没有从我的JSON文件中检索信息

时间:2014-12-01 15:59:16

标签: javascript jquery json

我的json文件名为data.JSON,它与我的index.html和我的js文件位于同一目录中。

在html中我链接了jquery,然后是js文件。

data.JSON中的数据是:

[
{
    "question": "What OS does the One Plus One run by default?",
    "choices": ["Android 5.0 Lollipop", "Cyanogen Mod 11", "Android Kitkat", "iOS", "Cyanogen Mod 11"]
},
{
    "question": "Who is the lead singer of the British band 'Muse'?",
    "choices": ["Matt Bellamy", "John Lennon", "Will.I.Am", "Danny O'Donoghue", "Matt Bellamy"]
},
{
    "question": "Which Japanese/American singer released 'Goodbye Happiness'?",
    "choices": ["Jay Park", "Utada Hikaru", "Gackt", "Yoshika", "Utada Hikaru"]
},
{
    "question": "The popular Korean girl-group known as 'Girl's Generation' is also known as:",
    "choices": ["4Minute", "SNSD", "After School", "Girl\'s Day", "SNSD"]
},
{
    "question": "What sub-genre of EDM does the hit 'Selfie' fall under?",
    "choices": ["Melbourne Bounce", "Big House Boom", "Dubstep", "Grime", "Melbourne Bounce"]
}
]

我链接的javascript文件包含:

$(document).ready(function () {
'use strict';
var allQuestions;

$.getJSON("data.json", function (info) {
       alert("hi"); 
    });
});

我遇到的实际问题是,我甚至无法获得弹出警报。我想要做的就是将我的JSON中的数据加载到我的JS文件中,以便我可以运行测验脚本,但是我只是在加载JSON时遇到了麻烦。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您正在尝试这是一款现代浏览器,我恐怕会告诉您AJAX通话无法正常工作。当本地提供页面时,Google Chrome会创建此错误消息: XMLHttpRequest cannot load file://data.json. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.

这意味着您需要服务器使用getJSON函数进行ajax调用。要获得简单的服务器设置,请按照@limelights的建议安装python并使用它的SimpleHTTPServer模块。

安装python后,打开终端/命令提示符,将cd打开到html文件所在的文件夹。然后输入命令python -m SimpleHTTPServer。这使您可以通过localhost:8000进行简单的服务器访问。现在脚本运行得很好。

注意:确保JSON文件中有一些文字,否则它无法正常工作。

答案 1 :(得分:0)

试试这个,这样你实际上可以看到失败的原因:

$(function() {
  $.getJSON("data2.json", function(data) {
    console.log(data);
  })
    .fail(function(err) {
      console.log(err.responseText);
    })
});

但是,您没有收到警报这一事实让我觉得您的代码中还有另一个错误。检查调试工具。