刷新后为什么更换了div内容?

时间:2014-12-30 17:23:55

标签: jquery html django

这是我第一次用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>");

2 个答案:

答案 0 :(得分:1)

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

要做到这一点,你有几个选择:

  1. 在数据库,会话等中保留ajax帖子中的数据
  2. 在客户端使用localStorage保留数据。
  3. 如果你坚持服务器端,你可以使用Django模板标签将其渲染出来。如果您将其保留在localStorage中,则需要通过JavaScript呈现它。您选择哪一个完全取决于您的应用程序的需求。

答案 1 :(得分:0)

我会这样做:

<span class="logo">
  <div id="pre-user">
      {% if user.is_authenticated %}
          Welcome <strong>{{ user.email }}</strong>
      {% else %}
          Welcome <strong>Guest</strong>
      {% endif %}  
  </div>            
</span>
这样,您可以保留现在只更改#pre-user html内容的js,如果用户重新加载页面,更改的内容将保留在那里,因为它现在是后端连接。