Rezvitsky Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 Привет, столкнулся с такой проблемой что когда я загружаю данные с сервера используя xhr они дублируются, перерыл javascript.ru но ответа не нашел. Вот сам код: https://gist.github.com/Rezvitsky/a719e29e07465b5e9f1425307f520ed2 Вот пример ошибки: Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 А чего им не дублироваться, если не ставиться условия от какой даты/идентификатора сообщения? Оно одно и тоже тебе подгружает каждую секунду, ещё и по тупому, как в вии. Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 9 июля, 2019 Автор Жалоба Поделиться Опубликовано 9 июля, 2019 Только что, Mario сказал: А чего им не дублироваться, если не ставиться условия от какой даты/идентификатора сообщения? Оно одно и тоже тебе подгружает каждую секунду, ещё и по тупому, как в вии. я тоже думал проверку на идентификатор сделать но не знаю как реализовать Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 19 минут назад, Rezvitsky сказал: я тоже думал проверку на идентификатор сделать но не знаю как реализовать Судя по дате на скрине новые выводятся выше, тогда там должно быть не append, а prepend, при добавлении к уже существующим. Делай там проверку if(last_id.lenght) prepend else append и ниже нужные строки по поводу вопроса. Спойлер var last_id = $('.swipeout:first'), url = api_transaction + '?access_token=' + accessToken + '&last_id=' + (last_id.lenght ? last_id.attr('message-id') : 0); <li class="swipeout" message-id="' + value.id + '"> Также учитывай, что ты вызываешь новые запросы, а новые сообщения ещё от старого запроса могут не вывестись циклом, делай проверку, жди окончания выполнения через $.when, допустим. Это ведь не пхп, тут ждать отставших не будут. Ну и в пхп, которого тут не видно делай проверку что бы message_id > поступивший через (int) $_GET['last_id]; Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 9 июля, 2019 Автор Жалоба Поделиться Опубликовано 9 июля, 2019 3 минуты назад, Mario сказал: Судя по дате на скрине новые выводятся выше, тогда там должно быть не append, а prepend, при добавлении к уже существующим. Делай там проверку if(last_id.lenght) prepend else append и ниже нужные строки по поводу вопроса. Скрыть контент var last_id = $('.message_class:first'), url = api_transaction + '?access_token=' + accessToken + '&last_id=' + (last_id.lenght ? last_id.attr('message-id') : 0); <li class="swipeout" message-id="' + value.id + '"> Также учитывай, что ты вызываешь новые запросы, а новые сообщения ещё от старого запроса могут не вывестись циклом, делай проверку, жди окончания выполнения через $.when, допустим. Это ведь не пхп, тут ждать отставших не будут. Если я тебя правильно понял то у меня вот так получилось: https://gist.github.com/73a22f6adf537795a41922ff9059f8ae Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 Только что, Rezvitsky сказал: Если я тебя правильно понял то у меня вот так получилось: https://gist.github.com/73a22f6adf537795a41922ff9059f8ae Поменяй там класс на свой, как я выше написал Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 9 июля, 2019 Автор Жалоба Поделиться Опубликовано 9 июля, 2019 1 минуту назад, Mario сказал: Поменяй там класс на свой, как я выше написал ошибка в этой строчке: v ar last_id = $('.page-transaction:first '), url = api_transaction + '?access_token=' + accessToken + '&last_id=' + (last_id.lenght ? last_id.attr('message-id') : 0); Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 И ещё если новых сообщений будет более одного, то будет проблемы из-за такого вывода, так что что бы работало нормально ещё при условии наличия последнего ид меняй сортировку с DESC на ASC или как там стоит, а то оно не правильно выведет, если будет более 1 сообщения, ибо в промежутки оно его не вставит. Или правильный вывод делать на js Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 1 минуту назад, Rezvitsky сказал: ошибка в этой строчке: v ar last_id = $('.page-transaction:first '), url = api_transaction + '?access_token=' + accessToken + '&last_id=' + (last_id.lenght ? last_id.attr('message-id') : 0); Причем тут page-transaction и что за пробел в начале? Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 И ты назначил ид сообщению только в одном условии, если есть последнее, а в другое не вставил Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 9 июля, 2019 Автор Жалоба Поделиться Опубликовано 9 июля, 2019 3 минуты назад, Mario сказал: И ещё если новых сообщений будет более одного, то будет проблемы из-за такого вывода, так что что бы работало нормально ещё при условии наличия последнего ид меняй сортировку с DESC на ASC или как там стоит, а то оно не правильно выведет, если будет более 1 сообщения, ибо в промежутки оно его не вставит. Или правильный вывод делать на js Вот сделал как ты сказал: https://gist.github.com/f5b07445ce1a802d5ac4f908e1a96bf4 попрежнему дублирует Ссылка на комментарий Поделиться на другие сайты Поделиться
Edward Nemirovskiy Опубликовано 9 июля, 2019 Жалоба Поделиться Опубликовано 9 июля, 2019 (изменено) 3 часа назад, Rezvitsky сказал: Привет, столкнулся с такой проблемой что когда я загружаю данные с сервера используя xhr они дублируются, перерыл javascript.ru но ответа не нашел. Вот сам код: https://gist.github.com/Rezvitsky/a719e29e07465b5e9f1425307f520ed2 Вот пример ошибки: На попробуй test.js Изменено 9 июля, 2019 пользователем Edward Nemirovskiy 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 10 июля, 2019 Автор Жалоба Поделиться Опубликовано 10 июля, 2019 (изменено) 9 часов назад, Edward Nemirovskiy сказал: На попробуй test.js спасибо, но вот когда я удалаляю транзакцию она появляется в первой строчке Изменено 10 июля, 2019 пользователем Rezvitsky Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 10 июля, 2019 Автор Жалоба Поделиться Опубликовано 10 июля, 2019 9 часов назад, Edward Nemirovskiy сказал: На попробуй test.js Извиняюсь все хорошо работает просто я забыл вставить функцию удаления Ссылка на комментарий Поделиться на другие сайты Поделиться
Edward Nemirovskiy Опубликовано 10 июля, 2019 Жалоба Поделиться Опубликовано 10 июля, 2019 10 минут назад, Rezvitsky сказал: Извиняюсь все хорошо работает просто я забыл вставить функцию удаления Ок Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 10 июля, 2019 Автор Жалоба Поделиться Опубликовано 10 июля, 2019 (изменено) 2 минуты назад, Edward Nemirovskiy сказал: Ок единственный недочет с заглушкой. Изменено 10 июля, 2019 пользователем Rezvitsky Ссылка на комментарий Поделиться на другие сайты Поделиться
Edward Nemirovskiy Опубликовано 10 июля, 2019 Жалоба Поделиться Опубликовано 10 июля, 2019 12 минут назад, Rezvitsky сказал: единственный недочет с заглушкой. } else if(!$('.swipeout').html()){ $('#page-transaction').html('<li><div class="item-content referal">No transactions</div></li>'); } вместо } else { document.getElementById('page-transaction').innerHTML = '<li><div class="item-content referal">No transactions</div></li>'; } Ссылка на комментарий Поделиться на другие сайты Поделиться
Mario Опубликовано 10 июля, 2019 Жалоба Поделиться Опубликовано 10 июля, 2019 17 минут назад, Edward Nemirovskiy сказал: Ок Действительно самое быстрое решение, но юзер всё равно подгружает ненужные сообщения Ссылка на комментарий Поделиться на другие сайты Поделиться
Edward Nemirovskiy Опубликовано 10 июля, 2019 Жалоба Поделиться Опубликовано 10 июля, 2019 Только что, Mario сказал: Действительно самое быстрое решение, но юзер всё равно подгружает ненужные сообщения но это уже в беке надо формулировать вывод Ссылка на комментарий Поделиться на другие сайты Поделиться
Rezvitsky Опубликовано 10 июля, 2019 Автор Жалоба Поделиться Опубликовано 10 июля, 2019 31 минуту назад, Edward Nemirovskiy сказал: } else if(!$('.swipeout').html()){ $('#page-transaction').html('<li><div class="item-content referal">No transactions</div></li>'); } вместо } else { document.getElementById('page-transaction').innerHTML = '<li><div class="item-content referal">No transactions</div></li>'; } такая же ситуация Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения