更改URL后,附加内容将消失

时间:2014-04-07 20:17:59

标签: javascript jquery python html flask

在我的网页上,我正在使用Flask微框架。为了让您更好地理解我的问题,我决定包含我的几个文件。希望我不会劝阻你。

示例请记住,由于我网站的复杂性,此示例不完整。但我希望它会说明这个问题。

运行服务器的script.py

from flask    import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
@app.route('/<name>')
def home(name=''):
    return render_template('home.html', name=name)

@app.route('/user/')
@app.route('/user/<task>')
def user(task=''):
    return render_template('user.html', task=task)

然后我有template.html

<!-- some html code -->
<div id="navBar"></div>

<div id="mainContent">
    {% block content %}
    {% endblock %}
</div>
<!-- some html code -->

user.html

{% extends 'template.html' %}
{% block content %}
    {% if task == 'homework' %}
        {% include '/tasks/homework.html' %}
    {% endif %}
{% endblock %}

最后我的script.js

// some jQuery script
$('#button').click(function(){
    $('#navTask').empty();
    $('#navTask').append('\
                    <div class="task">\
                        <a href="/user/homework">Homework</a>\
                    </div>');
});
// some jQuery script

回到我的问题!基本上它是这样做的。点击#button后,它会#navTask(位于页面某处的div)附加一些div,其中包含指向/user/homework的链接。点击Homework后,Flask会识别更改网址并呈现user.html,以便网页的某些部分发生变化。我的问题是:点击链接Homework后,链接Homework也会消失。我不确定,如何解决它。

我想,通过将div.task附加到#navBar,无论网址如何,它都会在整个网页中发生变化。但据我所知,它没有。

我希望这种行为 - 在页面的某个地方有一个div,点击#button后,内容会发生变化并显示新链接。当您单击链接时,页面上某处的内容会发生变化,但链接会保持原样。链接可能会消失,例如仅当您在home页面时。

注意我现在很确定,如果我的期望是真的。我可以通过使用jQuery来做到这一点,但因为main.py要复杂得多,而且我使用从URL获得的数据,我仍然采用这种方式&#34;方式&#34;。

1 个答案:

答案 0 :(得分:0)

也许我误解了您,但如果您不想刷新所有网页内容,则需要点击链接时触发AJAX请求。

每当提交的Ajax请求没有提交给服务器时 - 页面将被完全重绘。

在服务器端,您可以检查它是否XMLHTTPRequest以及是否返回JSON数据或其他方便。

也许这个小flask-jquery-example会帮助你。

P.S。您可以通过window.location.pathname$(location).attr('href')

获取JS方面的当前位置