这是我第一次用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>");
答案 0 :(得分:1)
您通过JavaScript添加的任何标记只会在一个请求周期中出现。如果您执行另一个GET请求,即使是相同的URL,动态添加的标记也不会出现在DOM中。
要做到这一点,你有几个选择:
如果你坚持服务器端,你可以使用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,如果用户重新加载页面,更改的内容将保留在那里,因为它现在是后端连接。