在外部文件中获取json数组$ .getJSON不起作用

时间:2014-02-25 15:34:17

标签: javascript arrays json

我有这个json文件:

{
"Tools": [
    {
        "Price": 25,
        "Counter": 0,
        "Multi": 4,
        "PriceMult": 1.3,
        "Name": "Cycler",
        "ID": "Tool2"
    },
    {
        "Price": 50,
        "Counter": 0,
        "Multi": 4,
        "PriceMult": 1.3,
        "Name": "Cycler",
        "ID": "Tool3"
    }
]
}

如果我使用getJSON它不起作用:

$.getJSON("http://localhost/test/json/tool.json", function(data ) {
  alert(data.Tools[0].Price);
});

如果我使用JSON.parse它可以工作:

var obj = JSON.parse('{"Tools" : [{"Price": 25,"Counter": 0,"Multi": 4,"PriceMult": 1.3,"Name": "Cycler","ID": "Tool2"},{"Price": 50,"Counter": 0,"Multi": 4,"PriceMult": 1.3,"Name": "Cycler","ID": "Tool3"}]}');
alert(obj.Tools[0].Price);

为什么会这样?


编辑:

这段代码是输出25:

$.getJSON("http://localhost/test/json/tool.json", function(data ) {
  alert(data.Price);
});

3 个答案:

答案 0 :(得分:0)

您可能需要通过以下方式访问该文件:

$.getJSON("test/json/tool.json", function(data ) {
  alert(data.Tools[0].Price);
});

我不知道localhost服务器的上下文根。上面的示例假设它是test的父文件夹。如果它是test文件夹本身,请从网址字符串中删除test

$.getJSON("json/tool.json", function(data ) {
  alert(data.Tools[0].Price);
});

答案 1 :(得分:0)

您是否检查了$ .getJSON调用的状态?这应该给出状态代码,指示通过ajax请求

检索文件的任何问题

答案 2 :(得分:0)

感谢大家的帮助。

问题已经解决了。我今天用alert(data.Tools[0].Price);尝试了它,但它确实有效。

可能是缓存问题。