새로 고침하지 않고 동일한 페이지를 새로 고침 하시겠습니까?

아마두 모돈

나는 이미 여기 에서이 질문을했지만 어떤 답변도 효과가 없었습니다. Django에 사용자가 서로 메시지를 보낼 수있는 메시징 앱이 있습니다. 사용자가 새 메시지를 볼 수 있도록 페이지를 새로 고치고 싶습니다. 하지만 사용자가 메시지를 작성하고 x 분마다 페이지를 다시로드하려고하면 사용자가 작성하고 있던 메시지가 사라집니다. 그래서 이것을 어떻게 피할 수 있습니까?

/*This is one of the solutions that I have tried*/
window.location.reload(true);
history.go(0);
window.location.href=window.location.href;

messages.html :

{% extends 'profile/base.html' %}
{% load tz %}
{% block title %}
Messages
{% endblock %}
{% block head %}
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <style>
          #form {
            position: fixed;
            bottom: 0;
            background-color:#f1f1f1;
          }
.container {
  border: 1px solid #dedede;
  background-color: #f1f1f1;
  border-radius: 5px;
  padding: 1px;
  margin: 1px 0;
}


.container::after {
  content: "";
  clear: both;
  display: table;
}

.darker {
  border-color: #ccc;
  background-color:#ddd;
}

.container img {
  float: left;
  max-width: 40px;
  height:40px;
  width: 100%;
  margin-right: 20px;
  border-radius: 50%;
}

.time-left {
  margin-left:61px;
  color: #999;
}

h4 {
    display:inline;
}
    </style>
{% endblock %}
{% block content %}
{% if not chat %}
    <div class="container">
         Impossible de commencer un chat avec cet utilisateur ou bien vous n'avez pas acces a ce chat.
    </div>
{% else %}
    {% if chat %}
        <div id ='bottom' class="panel">
                {% for message_item in chat.message_set.all %}
                {% url 'profile' message_item.author.pk as the_user_url%}
    {% if message_item.is_readed %}
    <div class="container">
    {% else %}
    <div class="container darker">
    {% endif %}
    <a href="{{ the_user_url }}">

  <img src="{{ message_item.author.profile.avatar.url }}" alt="Avatar" style="width:100%;">
  <h4><a href="{{ the_user_url }}">{{ message_item.author.profile.prenom|title }}</a></h4>
  <p>{{ message_item.message }}</p>
  <span class="time-left">{{ message_item.pub_date|utc }}</span>
  </a>
</div>

                {% endfor %}
                <br><br><br><br>
            </div>
        </div>
    {% endif %}

    <div class='w3-container'>
    <div id='form'>
        <form method="post" action='{% url 'messages' chat.id %}'>
            {% csrf_token %}
            {{ form.as_p }}

            <input type="submit" value='envoyez' />
            </form>
        </div>
        </div>
        <script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
        <script>
        $('document').ready(function() {
           $('html').animate({scrollTop: document.body.scrollHeight},1);
        });
        </script>
{% endif %}
{% endblock %}

urls.py :

from django.urls import path
from . import views

urlpatterns = [
    path('dialogs/<int:chat_id>/',views.MessagesView.as_view(), name='messages'),
    ]
아크람 광견병

메시징 앱의 경우 페이지를 다시로드하지 않고 대신 Ajax / fetch를 사용하고 메시지 가져 오기 요청을 호출 한 다음 페이지에 메시지를 표시하는 것이 좋습니다. 예를 들면 다음과 같습니다.

const getMessages = ()=>{
fetch("https://jsonplaceholder.typicode.com/comments") // use your messages request url, this is a sample
  .then((response) => response.json())
  .then((messages) => {
    let messagesHtml = "";
    for (var message of messages) {
    
      messagesHtml += `<div>${message.name}</div>`; // use your message html structure here
    }

    let messagesContainer = document.getElementById("messagesContainer");
    messagesContainer.innerHTML = messagesHtml;
  })
  .catch((err) => console.log(err));
}

  
  setInterval(getMessages, 3000);
<div id="messagesContainer"></div>

페이지를 다시로드해야하는 경우 사용자가 마지막으로 입력 한 시간을 확인하고 지연된 페이지를 다시로드 할 수 있습니다. 예를 들어 키 누르기를 듣고 페이지 다시로드를 처리 할 수있는 변수를 설정할 수 있습니다.

reloadDelay = 0;
function setDelayForReload(){
  reloadDelay = 3000;
}

function reloadPage(){
if(reloadDelay == 0){
  window.location.reload()
}

}
setTimeout(reloadPage, 3000)
<body onkeypress="setDelayForReload()">
  <div id="messagesContainer"></div>
</body>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

APEX : 페이지를 새로 고침하지 않고 제출

분류에서Dev

콘텐츠를 다시로드하지 않고 PHP 페이지를 새로 고침 하시겠습니까?

분류에서Dev

콘텐츠를 다시로드하지 않고 PHP 페이지를 새로 고침 하시겠습니까?

분류에서Dev

Datepicker 새로 고침이 작동하지 않습니까?

분류에서Dev

왜 작동하지 않습니까? android recyclerView 새로 고침

분류에서Dev

페이지를 새로 고침하지 않고 $ _POST 콘텐츠를 변경 하시겠습니까?

분류에서Dev

페이지 새로 고침에서 선택한 div를 제시 하시겠습니까?

분류에서Dev

Firefox-새로 고침하지 않고 페이지를 저장 하시겠습니까?

분류에서Dev

새로 고침하지 않고 PHP 파일 제출

분류에서Dev

페이지를 새로 고침 한 후 경고 표시

분류에서Dev

페이지를 새로 고침하지 않고 자바 스크립트 새로 고침

분류에서Dev

자동 ajax 새로 고침 후 수동으로 부분보기 새로 고침이 작동하지 않음

분류에서Dev

새로 고침하지 않고 다른 페이지로 전환 하시겠습니까?

분류에서Dev

새로 고침 후 다시 작동하지 않도록 방지

분류에서Dev

TableView의 자동 새로 고침이 작동하지 않음

분류에서Dev

jQuery 자동 새로 고침이 작동하지 않음

분류에서Dev

페이지를 다시로드하지 않고 DataTable 새로 고침

분류에서Dev

CSS 스타일을 새로 고침 하시겠습니까? (페이지 다시 그리기)

분류에서Dev

CSS 스타일을 새로 고침 하시겠습니까? (페이지 다시 그리기)

분류에서Dev

새로 고침하지 않고 div에 페이지를로드하는 Jquery UI

분류에서Dev

Checkedlistbox 새로 고침이 작동하지 않음

분류에서Dev

JSF Richfaces PopupPanel 새로 고침 양식이 작동하지 않음

분류에서Dev

버튼 클릭시 페이지 일부 새로 고침, 새 URL에서 전체 페이지 새로 고침

분류에서Dev

게시하지 않고 페이지 새로 고침 POST 새로 고침 암호 재설정

분류에서Dev

페이지 새로 고침에서 전환 기간이 작동하지 않음

분류에서Dev

Firefox에서 jquery 페이지 새로 고침이 작동하지 않음

분류에서Dev

Firefox에서 jquery 페이지 새로 고침이 작동하지 않음

분류에서Dev

타이머는 페이지를 새로 고침 할 때 자동으로 새로 고침됩니다.

분류에서Dev

웹 페이지를 새로 고침하라는 메시지

Related 관련 기사

  1. 1

    APEX : 페이지를 새로 고침하지 않고 제출

  2. 2

    콘텐츠를 다시로드하지 않고 PHP 페이지를 새로 고침 하시겠습니까?

  3. 3

    콘텐츠를 다시로드하지 않고 PHP 페이지를 새로 고침 하시겠습니까?

  4. 4

    Datepicker 새로 고침이 작동하지 않습니까?

  5. 5

    왜 작동하지 않습니까? android recyclerView 새로 고침

  6. 6

    페이지를 새로 고침하지 않고 $ _POST 콘텐츠를 변경 하시겠습니까?

  7. 7

    페이지 새로 고침에서 선택한 div를 제시 하시겠습니까?

  8. 8

    Firefox-새로 고침하지 않고 페이지를 저장 하시겠습니까?

  9. 9

    새로 고침하지 않고 PHP 파일 제출

  10. 10

    페이지를 새로 고침 한 후 경고 표시

  11. 11

    페이지를 새로 고침하지 않고 자바 스크립트 새로 고침

  12. 12

    자동 ajax 새로 고침 후 수동으로 부분보기 새로 고침이 작동하지 않음

  13. 13

    새로 고침하지 않고 다른 페이지로 전환 하시겠습니까?

  14. 14

    새로 고침 후 다시 작동하지 않도록 방지

  15. 15

    TableView의 자동 새로 고침이 작동하지 않음

  16. 16

    jQuery 자동 새로 고침이 작동하지 않음

  17. 17

    페이지를 다시로드하지 않고 DataTable 새로 고침

  18. 18

    CSS 스타일을 새로 고침 하시겠습니까? (페이지 다시 그리기)

  19. 19

    CSS 스타일을 새로 고침 하시겠습니까? (페이지 다시 그리기)

  20. 20

    새로 고침하지 않고 div에 페이지를로드하는 Jquery UI

  21. 21

    Checkedlistbox 새로 고침이 작동하지 않음

  22. 22

    JSF Richfaces PopupPanel 새로 고침 양식이 작동하지 않음

  23. 23

    버튼 클릭시 페이지 일부 새로 고침, 새 URL에서 전체 페이지 새로 고침

  24. 24

    게시하지 않고 페이지 새로 고침 POST 새로 고침 암호 재설정

  25. 25

    페이지 새로 고침에서 전환 기간이 작동하지 않음

  26. 26

    Firefox에서 jquery 페이지 새로 고침이 작동하지 않음

  27. 27

    Firefox에서 jquery 페이지 새로 고침이 작동하지 않음

  28. 28

    타이머는 페이지를 새로 고침 할 때 자동으로 새로 고침됩니다.

  29. 29

    웹 페이지를 새로 고침하라는 메시지

뜨겁다태그

보관