好吧,我真的不习惯 JSON 的东西吗?



我已经设法从数据库中获得了一个JSON输出,用于jQuery UI AutoComplete,这很好。

它的问题是,似乎自动删除插件为我完成了JSON数据的所有解析,所以我仍然要弄清楚它是如何实际完成的。

我有一个URL,http://test.hartnollguitars.co.uk/jsonOut/products.aspx?term=761294042656&barbard=yes(举个例子(,它给了我一个来自与我用于自动完成相同的JSON输出的单个记录,我正试图将这个单个记录输出用于单个案例。

所以我一直在谷歌上搜索jQuerygetJSON,但我似乎无法获得信息。

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

这就是我现在的处境,我知道这是错误的,我已经根据jQuery网站上的示例尝试了该代码的各种其他排列,但我就是无法获得所需的输出。

很明显,这是因为我不知道自己在做什么,但有人能解释一下你是如何做到的吗:

  1. 从这样的单个记录中获取数据
  2. 从一系列数据中获取数据并循环显示输出(例如,从Facebook Graph的FQL输出中获取事件等简单对象(

非常感谢所有的帮助!

data不是凭空而来的,它是成功函数的参数

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

然后你输出一个阵列

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

这就是"[]"分支的含义,因此您的数据可以通过另一种方式访问

data[0].label

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

console.log(data);

与alert((不同,wich将使您对对象有更深入的了解。

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

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

请记住使用绝对url,而不是相对url。粘贴的代码将把url附加到当前目录,因此只有当它来自/时,它才会工作。返回的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);
   }
});

最新更新