обновить веточку для l oop in ajax - PullRequest
0 голосов
/ 01 апреля 2020

Я занимаюсь проектом чата и пытаюсь обновить статус пользователя с помощью ajax.

. Проблема в том, что у пользователя может быть несколько друзей, поэтому сначала я использую веточку для l oop, чтобы показать всем друзьям, как эта, функция getLastActivity () предназначена для получения последнего времени пользователя в сети, если оно больше текущего времени, а затем показывает, что пользователь в сети.

{% for user in users%}
  {% if app.user.name != user.getName() %}
    <div id="status">
      {% if getLastActivity(user.getId()) > date("now + 8 hours - 10 seconds") %}
        <span class="online_icon"></span>
      {% else %}
        <span class="online_icon offline"></span>
      {% endif %}
    </div>
  {% endif %}
{% endfor %}

я не очень хорош в ajax, если что-то странное, пожалуйста, дайте мне знать. моя идея состоит в том, чтобы обновлять поле состояния каждые 3 се c. но он может обновить только первого друга.

Я думаю, это потому, что в шаблоне ветки я пишу только один раз, поэтому он не обновил остальных друзей.

$(document).ready(function () {
        setInterval(function(){
            update_status();
        }, 3000);

        function update_status()
        {
            $.ajax({
                success:function(){
                    $('#status').load(" #status");
                }
            })
        }
    })

Я вдохновлен этой статьей, Изменить переменную шаблона ветки с AJAX, но не уверен, как реализовать это в моей проблеме.

мой вопрос есть, можно ли использовать ajax, чтобы обновить статус всех друзей, или есть лучший способ добиться этого.

спасибо

1 Ответ

0 голосов
/ 01 апреля 2020

Проблема в том, что вы создаете элемент для каждого пользователя с идентификатором status . Идентификатор - это уникальный идентификатор , но вы используете его для каждого элемента.

Что вы можете сделать, например, создать элемент с идентификатором на основе пользователя obj:

{% for user in users%}
  {% if app.user.name != user.getName() %}
    <div id="status-{{ user.id }}">
      {* ... *}
    </div>
  {% endif %}
{% endfor %}

Я не знаю, как именно выглядит ваша функция update_status (), но вам нужно как-то получить идентификатор пользователя. Вы можете либо вернуть его для ajax, например, так:

$.ajax({
  success: function(userId){
    $('#status-' + userId).load(" #status");
  }
})

или l oop для всех элементов, и у вас будет идентификатор с помощью el.attr ('id').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...