0

Я работаю с результатами SDK для Javascript Facebook, а часть «вложений» объекта дает мне проблемы. При взгляде на объект все хорошо, но когда я пытаюсь отобразить его на своем веб-сайте, он говорит, что эти свойства не определены. Я неправильно разбираюсь?Часть объекта Facebook отображается как неопределенная, но она не является неопределенной

Вот объект:

{ 
"id":"xxx_xxx", 
"from":{ 
    "id":"xxxx", 
    "name":"User Name" 
}, 
"to":{ 
    "data":[{ 
     "name":"Group Name", 
     "id":"xxxx" 
    }] 
}, 
"picture":"url of image", 
"link":"url", 
"object_id":"Object ID", 
"type":"photo", 
"created_time":"2014-10-15T21:09:19+0000", 
"updated_time":"2014-10-15T21:09:19+0000", 
"attachments":{ 
    "data":[{ 
     "media":{ 
      "image":{ 
       "height":551, 
       "src":"Image Source", 
       "width":720 
      } 
     }, 
     "target":{ 
      "id":"742450405803347", 
      "url":"target URL" 
     }, 
     "type":"photo", 
     "url":"URL" 
    }] 
} 

А вот код для отображения «вложения» часть на веб-сайте (я знаю, что это грязно, не обращайте внимания, что):

post_div_html += '<p>------------------</p>\ 
       <p><b>Media-Image-Source</b>: ' + feed.attachments.data[0] + '</p>\ 
       <p><b>Target URL</b>: ' + feed.attachments.data[1] + '</p>\ 
       <p><b>Type</b>: ' + feed.attachments.data[2] + '</p>\ 
       <p><b>URL</b>: ' + feed.attachments.data[3] + '</p></div>'; 

Теперь, только чтобы быть ясным, то, что вы видите там, приводит к тому, что «неопределенный» отображается в качестве значения на моем веб-сайте. Все, что я пробовал, привело к ошибке, говорящей, что «feed.attachments.data.whatever is undefined».

У кого-нибудь есть идеи о том, как мне нужно показывать этот материал?

+0

Для начала, в то время как 'feed.attachments.data' действительно массив, он имеет только один элемент, так что вы не можете использовать индекс выше 0. Что-нибудь еще (например, 1, 2 и 3, как у вас в коде), безусловно, * undefined * – Phil

ответ

1

Я думаю, что вы хотите ...

var att = feed.attachments.data[0], 
    mediaImageSrc = att.media.image.src, 
    targetUrl = att.target.url, 
    type = att.type, 
    url = att.url; 

Я надеюсь, что имеет смысл.

Вот рабочий пример ...

var feed = { 
 
    "id": "xxx_xxx", 
 
    "from": { 
 
    "id": "xxxx", 
 
    "name": "User Name" 
 
    }, 
 
    "to": { 
 
    "data": [{ 
 
     "name": "Group Name", 
 
     "id": "xxxx" 
 
    }] 
 
    }, 
 
    "picture": "url of image", 
 
    "link": "url", 
 
    "object_id": "Object ID", 
 
    "type": "photo", 
 
    "created_time": "2014-10-15T21:09:19+0000", 
 
    "updated_time": "2014-10-15T21:09:19+0000", 
 
    "attachments": { 
 
    "data": [{ 
 
     "media": { 
 
     "image": { 
 
      "height": 551, 
 
      "src": "Image Source", 
 
      "width": 720 
 
     } 
 
     }, 
 
     "target": { 
 
     "id": "742450405803347", 
 
     "url": "target URL" 
 
     }, 
 
     "type": "photo", 
 
     "url": "URL" 
 
    }] 
 
    } 
 
}; 
 

 
var att = feed.attachments.data[0], 
 
    mediaImageSrc = att.media.image.src, 
 
    targetUrl = att.target.url, 
 
    type = att.type, 
 
    url = att.url; 
 

 
post_div_html = '<p>------------------</p>\ 
 
       <p><b>Media-Image-Source</b>: ' + mediaImageSrc + '</p>\ 
 
       <p><b>Target URL</b>: ' + targetUrl + '</p>\ 
 
       <p><b>Type</b>: ' + type + '</p>\ 
 
       <p><b>URL</b>: ' + url + '</p></div>'; 
 
document.getElementById('out').innerHTML = post_div_html;
<output id="out"></output>

+0

отлично, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^