我已经设法从我的数据库中获取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网站上的示例后尝试了这些代码的各种其他排列,但我无法得到我需要的输出。
显然是因为我不知道自己在做什么,但是有人可以解释一下你是怎么做的:
所有人都非常感谢!
答案 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);
}
});