Анализ вывода JSON YQL с добавлением jQuery к идентификаторам

У меня есть выходная строка JSON YQL по этому URL-адресу: YQL JSON

Я нашел некоторые другие

Я пытаюсь понять, почему я не могу получить определенные элементы из возврата JSON. Например, используя jQuery, если мне нужны первые DIV H1, которые я использую:

$.ajax({
       url:"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.missoulaavalanche.org%2Fcurrent-advisory%2F%22%20and%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22content%22%5D%2Fdiv%5B1%5D'&format=json",
       dataType: 'jsonp',
       jsonp: 'callback',
       jsonpCallback: 'cbfunc'
    });
    function cbfunc(data){
      var id = data.query.results.div;

      $('#table').append('<li>'+id.h1+'</li>');

  $('#table').listview('refresh');
}       

Я попытался получить некоторую информацию, скажем, img alt или img src, из второго div... div1 следующим образом:

function cbfunc(data){
      var id = data.query.results.div[1];

      $('#table').append('<li>'+id.img.alt+'</li>');

      $('#table').listview('refresh');
    }

Я продолжаю получать Undefined или никаких результатов... Что я упускаю или не понимаю в получении результатов из списка yql JSON?

РЕДАКТИРОВАТЬ: я прочитал сообщение на Блог YQL о очистке кеша... Поэтому я использую их предложение.

РЕДАКТИРОВАТЬ 2: вот JSON из файла yql. Например, я хотел бы получить div img src, но не получаю возврата или получаю объект. Я думаю, что это будет data.query.results.div1.img.src

Я получаю data.query.results.div.h1 без проблем:

cbfunc({
 "query": {
  "count": 1,
  "created": "2012-03-28T15:36:28Z",
  "lang": "en-US",
  "results": {
   "div": {
    "id": "content",
    "div": [
     {
      "class": "post-2491 post type-post status-publish format-standard hentry category-advisories",
      "id": "post-2491",
      "h1": "March 26, 2012 Avalanche Advisory",
      "p": {
       "class": "postmetadata alt",
       "small": {
        "br": [
         null,
         null
        ],
        "a": {
         "href": "http://www.missoulaavalanche.org/category/advisories/",
         "rel": "category tag",
         "title": "View all posts in Advisories",
         "content": "Advisories"
        },
        "content": "This entry was posted on Monday, March 26th, 2012 at 6:55 am\n Categories: \n"
       }
      },
      "div": [
       {
        "id": "danger_rating",
        "a": {
         "href": "http://www.missoulaavalanche.org/wp-content/themes/missoula-avalanche/images/ratings/avalanche_danger_scale.jpg",
         "img": {
          "alt": "Current Danger Rating is MODERATE",
          "src": "http://www.missoulaavalanche.org/wp-content/themes/missoula-avalanche/images/ratings/moderate.gif"
         }
        }
       },
       {

person jasonflaherty    schedule 27.03.2012    source источник


Ответы (2)


Это проще, чем вы думаете, если вы используете jQuery.getJSON.

Попробуй это:

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.missoulaavalanche.org%2Fcurrent-advisory%2F%22%20and%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22content%22%5D%2Fdiv%5B1%5D'&format=json",
          function(data) {
              var id = data.query.results.div;
              $('#table').append('<li>'+id.h1+'</li>');
              $('#table').listview('refresh');
          }
);
person swook    schedule 28.03.2012
comment
Привет свук. Спасибо за ответ. Будут ли у меня проблемы с кэшированием YQL и этим примером? Кроме того, я не могу получить больше, чем первые результаты DIV... такие же, как у меня уже есть. Я хотел бы получить второй результат div и вытащить оттуда img.src. - person jasonflaherty; 28.03.2012

Параметр функции jsonp просто определяет сервер имен функций, который используется для оболочки для jsonp.

Чтобы получить доступ к вашим данным, вам нужно сделать это в успешном обратном вызове $.ajax. В приведенном выше коде отсутствует $ перед .ajax

$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.missoulaavalanche.org%2Fcurrent-advisory%2F%22%20and%20xpath%3D'%2F%2Fdiv%5B%40id%3D%22content%22%5D%2Fdiv%5B1%5D'&format=json",
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: 'cbfunc',
    success: function(data) {
        var results=data.query.results;
        /* work with results object here*/

    }
});
person charlietfl    schedule 27.03.2012
comment
Здравствуйте, спасибо за ответ. Я точно вижу, что ты там делаешь. Однако я все еще не получаю информацию о div[1]. Например. Я хотел бы получить data.query.results.div[1].img.src... Я могу получить data.query.results.div.h1 без проблем, но с чем-то в следующем div у меня проблемы. Спасибо - person jasonflaherty; 28.03.2012
comment
данные не кажутся согласованными ... 1-й div не имеет img.src в опубликованном вами примере ответа. Возможно, вам потребуется настроить запрос YQL. - person charlietfl; 28.03.2012