【问题标题】:why replaced div content gone after refresh?为什么刷新后替换的div内容消失了?
【发布时间】:2014-12-30 17:23:55
【问题描述】:

这是我第一次用 django 练习 jquery。我只想在用户认证成功时用新内容替换 div 内容。到目前为止,我的代码正在运行,但每当用户刷新页面时,它都会返回默认 html。我该如何防止这种情况..?

html

<span class="logo">
   <div id="pre-user">Welcome <strong>Guest</strong></div>            
</span>

js

success: function(data) {
    if (data.result != "success") {
        // error message
        alert("Sorry, something went wrong... try again.");
    } else {
        $("#pre-user").html("Welcome <strong>" + data.userEmail + "</strong>");

【问题讨论】:

  • 您的代码是否检查当前经过身份验证的用户是否已经登录?您的 js sn-p 似乎只在用户尝试登录时显示。
  • 在 django 中我可以使用 request.user.is_authenticated 但我说的是不刷新页面但如果假设用户刷新页面那么我应该怎么做..?我需要这方面的最佳实践..
  • 当他们推送重载时;然后我会让后端填写正确的信息。仅在最初登录时使用 JS。

标签: jquery html django


【解决方案1】:

您通过 JavaScript 添加的任何标记只会在一个请求周期内出现。如果您执行另一个 GET 请求,即使是相同的 url,动态添加的标记也不会出现在 DOM 中。

为此,您有几个选择:

  1. 将来自 ajax 帖子的数据保存在数据库、会话等中。
  2. 在客户端使用 localStorage 持久化数据。

如果你在服务器端持久化它,你可以使用 Django 模板标签来渲染它。如果将其持久化在 localStorage 中,则需要通过 JavaScript 呈现它。您选择哪一种完全取决于您的应用程序的需求。

【讨论】:

    【解决方案2】:

    我会这样做:

    <span class="logo">
      <div id="pre-user">
          {% if user.is_authenticated %}
              Welcome <strong>{{ user.email }}</strong>
          {% else %}
              Welcome <strong>Guest</strong>
          {% endif %}  
      </div>            
    </span>
    

    这样,您现在可以保留您的 js,它只是更改了 #pre-user 的 html 内容,如果用户重新加载页面,更改的内容将保留在那里,因为它现在是后端连接的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多