好吧,我真的不接受JSON的东西?

时间:2011-11-14 20:07:43

标签: jquery json getjson

我已经设法从我的数据库中获取JSON输出以用于jQuery UI AutoComplete,并且工作正常。

麻烦的是,似乎AutoComoplete插件为我完成了所有JSON数据的解析,所以我还要弄清楚它是如何实现的。

我有一个URL,http://test.hartnollguitars.co.uk/jsonOut/products.aspx?term=761294042656&barcode=yes(作为示例),它为我提供了与用于自动完成的相同JSON输出的单个记录,我正在尝试将此单个记录输出用于单个案例。 / p>

所以我一直在使用谷歌搜索和搞乱jQuery getJSON,但我似乎无法获得信息。

$.getJSON("jsonOut/products.aspx?barcode=yes", function () { alert(data.label);  });

我现在处于什么样的地方,我知道这是错误的,我在jQuery网站上的示例后尝试了这些代码的各种其他排列,但我无法得到我需要的输出。

显然是因为我不知道自己在做什么,但是有人可以解释一下你是怎么做的:

  1. 从像这样的单一记录中获取数据
  2. 从一系列数据中获取数据并循环显示输出(例如,来自Facebook Graph的FQL输出,用于简单对象,例如事件)
  3. 所有人都非常感谢!

3 个答案:

答案 0 :(得分:4)

data并非来自任何地方,它是您成功函数的参数

$.getJSON(
     "jsonOut/products.aspx?barcode=yes", 
     function (data) { 
         alert(data.label);  
});

然后输出一个数组

[
   {
        "label": "Boss TR-2 Tremolo Pedal",
        "price": 79,
        "id": 1287
    }
]

这就是'[]'braches代表什么,所以你的数据可以用另一种方式访问​​

data[0].label

请考虑在Firefox中开发并使用FireBug,然后您可以编写

console.log(data);

而不是alert(),它可以让您更深入地了解您的对象。

答案 1 :(得分:4)

我看了你的JSON输出: [{"label":"Boss TR-2 Tremolo Pedal","price":79,"id":1287}]

问题是,您的代码输出了一个对象列表。 请改为data[0].label

答案 2 :(得分:1)

记住使用绝对网址,而不是亲戚网址。您粘贴的代码会将网址附加到当前目录,因此只有来自/的网址才会生效。 返回的JSON是一个数组,因此您必须取消引用一个元素:

$.getJSON("/jsonOut/products.aspx?barcode=yes", function (data) { alert(data[0].label);  });

或者更有用的事情是:

$.getJSON("/jsonOut/products.aspx?barcode=yes", function (data) {
   for (var i = 0; i < data.length; ++i) {
      alert(data[i].label);
   }
});