Хорошо, я действительно не ладит с JSON? - PullRequest
1 голос
/ 15 ноября 2011

Мне удалось получить вывод JSON из моей базы данных для использования с jQuery UI AutoComplete, и это работает нормально.

Проблема в том, что, похоже, плагин AutoComoplete выполняет для меня весь анализ данных JSON, поэтому мне все еще предстоит выяснить, как это на самом деле делается.

У меня есть URL, http://test.hartnollguitars.co.uk/jsonOut/products.aspx?term=761294042656&barcode=yes (в качестве примера), который дает мне одну запись из того же вывода JSON, который я использую для автозаполнения, я пытаюсь использовать этот вывод одной записи для одного случая.

Так что я гуглял и баловался с jQuery getJSON, но, похоже, не смог получить информацию.

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

Это то, где я сейчас нахожусь, я знаю, что это неправильно, и я пробовал различные другие варианты этого кода, следуя примерам с сайта jQuery, но я просто не могу получить нужный вывод.

Это очевидно, потому что я понятия не имею, что я делаю, но может кто-то просто объяснить, как вы:

  1. Получить данные из одной записи, подобной этой
  2. Получить данные из серии данных и выполнить цикл для отображения вывода (например, из вывода FQL из графика Facebook для простого объекта, такого как события)

Вся помощь очень ценится!

Ответы [ 3 ]

4 голосов
/ 15 ноября 2011

Я посмотрел на ваш вывод JSON: [{"label":"Boss TR-2 Tremolo Pedal","price":79,"id":1287}]

Проблема в том, что ваш код выводит список объектов. Попробуйте data[0].label вместо.

4 голосов
/ 15 ноября 2011

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 (), который даст вам гораздо лучшее понимание ваших объектов.

1 голос
/ 15 ноября 2011

Запомните использовать абсолютный 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);
   }
});
...