Консоль говорит об ошибке notify.js:17 Uncaught TypeError

InstantCMS 2

 
Посетитель
small user social cms
Медаль
Сообщений: 260
Консоль сообщает об ошибке Uncaught TypeError: Cannot read property 'success' of null - notify.js:17

В файле в 17 (здесь 1-я) строке следующий код:
Код JS:
  1. if (!data.success){
  2.  
  3. $('#chatAudio')[0].play();
  4.  
  5. $.each(data.result, function(i, j) {
  6.  
  7. $.jGrowl(j.name, { theme: 'notify_message Left', header: title, life: life, speed: speed, sticky: sticky, position: position } );
  8.  
  9. var $button = $('li.messages-counter');
  10. $('.counter', $button).remove();
  11. if (j.num > 0) {
  12. var html = '<span class="counter">' + j.num + '</span>';
  13. $('a', $button).append(html);
  14. }
  15.  
  16. });
Помогите решить проблему. Заранее спасибо
Редактировалось: 1 раз (Последний: 14 августа 2016 в 06:00)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Покажите весь код.Под споллер только,если большой.Что это у вас,уведомление?
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 260
Lora:

Покажите весь код.Под споллер только,если большой.Что это у вас,уведомление?
Да, это дополнение уведомление как ВК, автор почему то не отвечает на сообщения.

Спойлер
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 394
Ошибка обычная, тип переменной data undefined, а у undefined методов быть не может. Весь код выложите.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1979
А у элемента data свойство success выше по коду определено? Это же js, а не php....Здесь надо
Код JS:
  1. if(typeof data.success === 'undefined'){...}
Редактировалось: 3 раз (Последний: 14 августа 2016 в 16:47)
NOP
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 394
Странник, будет ошибка все равно, нельзя проверять несуществующий метод переменной типа undefined. Тут бы понять смысл этих строк, так-то можно просто объявить переменную и условие будет исполняться всегда, выдавая ошибку на data.result.
Посетитель
small user social cms
Медаль
Сообщений: 260
Джехутимери:

Ошибка обычная, тип переменной data undefined, а у undefined методов быть не может. Весь код выложите.
Весь код в сообщении выше под спойлером
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 394
Вам ничего не возвращается с сервера, надо уже php смотреть.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Попробуйте вместо if (!data.success){ написать if(data.error == false) {, если всё что ниже должно выполнятся в случае отсутствия сообщения или if(data.error == true) { , если наоборот.
Посетитель
small user social cms
Медаль
Сообщений: 260
Lora:

Попробуйте вместо if (!data.success){ написать if(data.error == false) {, если всё что ниже должно выполнятся в случае отсутствия сообщения или if(data.error == true) { , если наоборот.
Не помогло
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 394
В дополнениях нашел эту разработку. На демо есть тоже эта ошибка.
Как и было сказано - посылается post, ничего не возвращается с сервера, data пуста, идет обращение к несуществующему методу, вываливается ошибка. Поскольку все это навешенно на setInterval без проверки авторизирован ли пользователь, Вы получаете ошибку.
Быстрый фикс, вернее костыль, это в теле response-функции делать проверку data, а именно:

Код
Разработчику же нужно доработать данное расширение, ибо посылать постоянно запрос на сервер в условиях невозможности его исполнения по крайней мере неразумно.
Редактировалось: 1 раз (Последний: 15 августа 2016 в 16:46)
Посетитель
small user social cms
Медаль
Сообщений: 260
Джехутимери:

В дополнениях нашел эту разработку. На демо есть тоже эта ошибка.
Как и было сказано - посылается post, ничего не возвращается с сервера, data пуста, идет обращение к несуществующему методу, вываливается ошибка. Поскольку все это навешенно на setInterval без проверки авторизирован ли пользователь, Вы получаете ошибку.
Быстрый фикс, вернее костыль, это в теле response-функции делать проверку data, а именно:

[spoiler=Код]
Код JAVASCRIPT:
  1.  
  2. var icms = icms || {};
  3.  
  4. icms.notify = (function($) {
  5.  
  6. this.getMessages = function(user_id, title, life, speed, sticky, position, avatar, update_limit) {
  7.  
  8. setInterval(
  9. function() {
  10. $.post('/notify/messages', {
  11. user_id: user_id,
  12. avatar: avatar
  13. },
  14.  
  15. function(data) {
  16.  
  17. if (data) {
  18.  
  19. if (!data.success) {
  20.  
  21. $('#chatAudio')[0].play();
  22.  
  23. $.each(data.result, function(i, j) {
  24.  
  25. $.jGrowl(j.name, {
  26. theme: 'notify_message Left',
  27. header: title,
  28. life: life,
  29. speed: speed,
  30. sticky: sticky,
  31. position: position
  32. });
  33.  
  34. var $button = $('li.messages-counter');
  35. $('.counter', $button).remove();
  36. if (j.num > 0) {
  37. var html = '' + j.num + '';
  38. $('a', $button).append(html);
  39. }
  40.  
  41. });
  42.  
  43. }
  44.  
  45. }
  46.  
  47. }, "json");
  48. }, update_limit);
  49.  
  50. }
  51.  
  52. return this;
  53.  
  54. }).call(icms.notify || {}, jQuery);
  55.  
[/spoiler]
Разработчику же нужно доработать данное расширение, ибо посылать постоянно запрос на сервер в условиях невозможности его исполнения по крайней мере неразумно.

Огромное вам спасибо, теперь консоль не ругается
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: