Rezvitsky Posted July 9, 2019 Report Share Posted July 9, 2019 Привет, столкнулся с такой проблемой что когда я загружаю данные с сервера используя xhr они дублируются, перерыл javascript.ru но ответа не нашел. Вот сам код: https://gist.github.com/Rezvitsky/a719e29e07465b5e9f1425307f520ed2 Вот пример ошибки: Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 9, 2019 А чего им не дублироваться, если не ставиться условия от какой даты/идентификатора сообщения? Оно одно и тоже тебе подгружает каждую секунду, ещё и по тупому, как в вии. Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 9, 2019 Author Report Share Posted July 9, 2019 Только что, Mario сказал: А чего им не дублироваться, если не ставиться условия от какой даты/идентификатора сообщения? Оно одно и тоже тебе подгружает каждую секунду, ещё и по тупому, как в вии. я тоже думал проверку на идентификатор сделать но не знаю как реализовать Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 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]; Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 9, 2019 Author Report Share Posted July 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 Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 9, 2019 Только что, Rezvitsky сказал: Если я тебя правильно понял то у меня вот так получилось: https://gist.github.com/73a22f6adf537795a41922ff9059f8ae Поменяй там класс на свой, как я выше написал Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 9, 2019 Author Report Share Posted July 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); Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 9, 2019 И ещё если новых сообщений будет более одного, то будет проблемы из-за такого вывода, так что что бы работало нормально ещё при условии наличия последнего ид меняй сортировку с DESC на ASC или как там стоит, а то оно не правильно выведет, если будет более 1 сообщения, ибо в промежутки оно его не вставит. Или правильный вывод делать на js Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 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 и что за пробел в начале? Quote Link to comment Share on other sites More sharing options...
Mario Posted July 9, 2019 Report Share Posted July 9, 2019 И ты назначил ид сообщению только в одном условии, если есть последнее, а в другое не вставил Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 9, 2019 Author Report Share Posted July 9, 2019 3 минуты назад, Mario сказал: И ещё если новых сообщений будет более одного, то будет проблемы из-за такого вывода, так что что бы работало нормально ещё при условии наличия последнего ид меняй сортировку с DESC на ASC или как там стоит, а то оно не правильно выведет, если будет более 1 сообщения, ибо в промежутки оно его не вставит. Или правильный вывод делать на js Вот сделал как ты сказал: https://gist.github.com/f5b07445ce1a802d5ac4f908e1a96bf4 попрежнему дублирует Quote Link to comment Share on other sites More sharing options...
Edward Nemirovskiy Posted July 9, 2019 Report Share Posted July 9, 2019 (edited) 3 часа назад, Rezvitsky сказал: Привет, столкнулся с такой проблемой что когда я загружаю данные с сервера используя xhr они дублируются, перерыл javascript.ru но ответа не нашел. Вот сам код: https://gist.github.com/Rezvitsky/a719e29e07465b5e9f1425307f520ed2 Вот пример ошибки: На попробуй test.js Edited July 9, 2019 by Edward Nemirovskiy 1 Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 10, 2019 Author Report Share Posted July 10, 2019 (edited) 9 часов назад, Edward Nemirovskiy сказал: На попробуй test.js спасибо, но вот когда я удалаляю транзакцию она появляется в первой строчке Edited July 10, 2019 by Rezvitsky Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 10, 2019 Author Report Share Posted July 10, 2019 9 часов назад, Edward Nemirovskiy сказал: На попробуй test.js Извиняюсь все хорошо работает просто я забыл вставить функцию удаления Quote Link to comment Share on other sites More sharing options...
Edward Nemirovskiy Posted July 10, 2019 Report Share Posted July 10, 2019 10 минут назад, Rezvitsky сказал: Извиняюсь все хорошо работает просто я забыл вставить функцию удаления Ок Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 10, 2019 Author Report Share Posted July 10, 2019 (edited) 2 минуты назад, Edward Nemirovskiy сказал: Ок единственный недочет с заглушкой. Edited July 10, 2019 by Rezvitsky Quote Link to comment Share on other sites More sharing options...
Edward Nemirovskiy Posted July 10, 2019 Report Share Posted July 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>'; } Quote Link to comment Share on other sites More sharing options...
Mario Posted July 10, 2019 Report Share Posted July 10, 2019 17 минут назад, Edward Nemirovskiy сказал: Ок Действительно самое быстрое решение, но юзер всё равно подгружает ненужные сообщения Quote Link to comment Share on other sites More sharing options...
Edward Nemirovskiy Posted July 10, 2019 Report Share Posted July 10, 2019 Только что, Mario сказал: Действительно самое быстрое решение, но юзер всё равно подгружает ненужные сообщения но это уже в беке надо формулировать вывод Quote Link to comment Share on other sites More sharing options...
Rezvitsky Posted July 10, 2019 Author Report Share Posted July 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>'; } такая же ситуация Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.