使用flas将ajax表的值提交给python方法

2024-10-05 15:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近了解了flask,我正试图编写一个小的web工具来帮助我组织数据。在一页纸上,我打印出一张列表编号及其说明。我有jQuery脚本,它允许我双击我想要选择的内容,但是我在请求使用ajax调用发布的数据时遇到了一个问题。除了重定向到包含数据的新url之外,所有与此代码相关的工作都正常。jQuery代码用于选择特定的行,并双击所有的工作,但是我对用POST和ajax请求发送数据的掌握不够。我的最终目标是允许用户双击表中的特定行,它会将第一列中的数字发送到下一页。当我运行这个程序时什么都不会发生。在

特定部分的flaskpython代码在这里

@app.route('/shelved/<user>', methods=['POST'])
def shelved(user):
    userinfo = dict(name='name', user='name', email='name@email.com')
    shelvedFiles = getInfo(user)
    if request.method =='POST':
        cl = request.form['cl']
        return redirect(url_for('change', cl=cl))
    return render_template('select_cl.html', userinfo=userinfo, shelvedFiles = shelvedFiles)

表格的html如下:

^{pr2}$

以及相应的css:

.selected         { background-color: #1B1B1B; font-color: black; }

我用来突出显示表中的行的javascript、双击函数和ajax POST调用在这里

<script>$(document).ready(function() {
   $("#table tr").click(function(){
   $(this).addClass('selected').siblings().removeClass('selected');    
   var value=$(this).find('td:first').html();
  });
  $('#table tr').on("dblclick",  function(e){
    var cl = $("#table tr.selected td:first").html();
    $.ajax({
        url: "{{ url_for('shelved', user=userinfo.user) }}",
        data: {'cl' : cl},
        type: 'POST',
        success: function(response) {
            console.log(response);
        },
        error: function(error) {
            console.log(error);
        }
    });
  });       
});</script>

我最初的ajax调用是这样的

$.ajax({
  url: "{{ url_for('shelved', user=userinfo.user) }}",
  data: {'cl' : cl},
  type: 'POST',
  success: function() {
            console.log('success');
        },
        error: function(error) {
            console.log(error);
        }
});

我会在Chrome的开发者标签上看到这个帖子是成功的。因此,我将其更改为记录响应(我发布的原始jQuery代码),并且可以在控制台中看到要重定向到的url的html以及正确传递的数据。我以为可能是我重定向到的页面和flask函数有问题,但我写了一个黑客的静态版本,它运行得很好。这只是在我包含jQuery和ajax调用时才开始的。有人能看出我哪里出了问题吗?在


Tags: 数据代码nameurlclhtmlajaxfunction
1条回答
网友
1楼 · 发布于 2024-10-05 15:19:37

因此,使用Ajax将数据发送到Flask后端并得到一个响应,即重定向到另一个页面。它不能像您预期的那样工作的原因是您在Ajax调用中收到了来自Flask的响应。你得到了新的网址,你只是没有做任何事。在

$.ajax({
  url: "{{ url_for('shelved', user=userinfo.user) }}",
  data: {'cl' : cl},
  type: 'POST',
  success: function(data) {
            console.log('success');
            window.location.href = data; // navigate to the new URL
        },
        error: function(error) {
            console.log(error);
        }
});

相关问题 更多 >