2015-12-27 4 views
-2

пытаюсь обрабатывать неопределенную ошибку в JavaScript
консоль демпинг эта ошибкаHandle JavaScript ошибка

Uncaught TypeError: Cannot read property 'data' of undefined

мой код:

try { 

FB.api(
    '/me/', 
    'GET', 
    {"fields":"posts{likes.limit(10){id,name}}"}, 
    function(response1) { 

console.log(response1); 
response1.posts.data[1].likes.data[0].id 
if (typeof(response1.posts.data[1].likes.data[0].id) == 'undefined') { 

alert("error1"); 
} 

}); 


} 
catch(err) { 

alert("erro2"); 

} 

, что я делаю неправильно?

+0

'response1.posts' не может быть определена. Что показывает вам 'console.log (response1)'? –

+0

Array с идентификаторами и именами Я знаю 'response1.posts.data [1] .likes.data [0] .id' не определено , но мне нужно обработать эту ошибку –

+0

Пожалуйста, отформатируйте/отступы свой код. Кроме того, это все еще актуально? http://stackoverflow.com/questions/3335977/accessing-data-from-response-of-fb-api –

ответ

0

Может быть, ответ не является объектом, а строкой. Попробуйте преобразовать его в JavaScript Object:

console.log(response1); 
response1 = JSON.parse(response1); 
response1.posts.data[1].likes.data[0].id 
+0

Это не строка. –

1

вы пытаетесь получить некоторые данные из цепочки объектов, где объект до Вашего объекта не определен, так явно вы пытаетесь вызвать undefined.data. поэтому ваше if-условие не заполнено, и вы получаете только свою обычную консольную ошибку вместо своего alert (что желательно здесь, так как я понимаю ваш код).

Вместо этого вы могли бы сделать что-то вроде этого:

if (typeof(response1.posts) && typeof(response1.posts.data[1].likes.data[0].id) == 'undefined') 
{...} 
+0

по-прежнему та же ошибка –

+1

попробуйте использовать typeof on response1, например, и измените условие, как оно подходит вашему делу. мой ответ просто содержит пример, который (я думаю) не будет делать именно то, что вы хотите, но должен дать вам понять, что происходит не так, и как вы могли это исправить. См. Ссылку @torazaburo в своем комментарии к вашему вопросу, который может быть уместным. – Dominik