如何在没有JQuery的情况下使HTML表行可单击?

时间:2018-08-02 09:05:46

标签: python jquery html flask jinja2

我使用烧瓶,想要从表中选择一个用户,然后使用所选用户的ID重定向页面。我的代码如下所示:

HTML:

<form action="" method="POST">
    <table>
        <tr>
            <th>Id</th>
            <th>First Name</th>
            <th>Last Name</th>
        </tr>
            {% for user in users %}
                <tr type="submit" name="action" value="{{user.user_id}}">
                    <td>{{user.user_id}}</td>
                    <td>{{user.first_name}}</td>
                    <td>{{user.last_name}}</td>
                </tr>
            {% endfor %}
    </table>
</form>

Python:

def userSelect():
if request.method == 'POST':
    return redirect(url_for('user', user=request.form['action']))
return render_template('userSelect.html', users=user.query.all())

我也尝试过使用JQuery进行发布,但是我不确定如何在重定向到的页面中使用ID,并且在从JQuery进行发布后无法从flask进行重定向:

$("table tr").on("click",function()
{
    var selected = $("td:first", this).text();
    $.post("/user", {user_id: selected}, function(){
        window.location.href = "/user";
    });
});

编辑:

让我说我想在重定向到的页面上显示该ID(类似这样):

@app.route("/user")
def user(user):
    return user

1 个答案:

答案 0 :(得分:2)

使用您的Jquery代码,它将为服务器制作一个ajax

$.post("/user", {user_id: selected}, function(){
    window.location.href = "/user";
});

因此,如果您修改代码,Flask无法重定向:

$.post("/user", {user_id: selected}, function(data){
    console.log(data);
});

您将看到Flask返回了重定向页面的HTML。

最后,我认为这对您有帮助: 烧瓶:

@app.route('/user/<user_id>')
def userHasSelected(user_id):
    ....
    // I don't know why do you need this return redirect
    return redirect(url_for('user', user=request.form['action']))

JS:

$("table tr").on("click",function()
{
    var selected = $("td:first", this).text();

    // {{url_for('user', user_id=selected)}} it will be rending from server
    window.location.href = {{url_for('user', user_id=selected)}}
    // or
    window.location.href = `/user?user_id=${selected}`;
});