为了账号安全,请及时绑定邮箱和手机立即绑定

在JS中生成csv并使用ajax请求POST将其发送到flask

在JS中生成csv并使用ajax请求POST将其发送到flask

慕侠2389804 2021-12-23 15:32:54
我正在尝试使用我的代码在 JS 中创建一个 CSV 文件table2csv。然后我想使用ajax请求将它发送到flask并再次返回给客户端。但是当我尝试将文件发送到服务器时,它返回 ajax 找不到我的文件的错误。我使用 console.log 来检查我的文件是否已创建并且是。我被卡住了,不知道该怎么办了,因为我对 ajax 请求很陌生,所以任何帮助都会很棒。这是我的 JS 部分以及我目前正在做的事情://On Update click renders table to csv, activates the be_filter and reopens it in the filtered_file.htmlvar isClicked;jQuery("#update").on('click', function(){    var response = confirm('Are you sure you want to UPDATE rows ?');    if(response == true){        isClicked = $('#my_id').table2csv();        $.ajax({            type:'POST',            url:"{{url_for('update_file')}}",            data: {'data': isClicked},            success: function(result){                console.log(result);            },            error: function(error){                console.log(JSON.stringify(error));            }        });event.preventDefault();         //window.location.href='/update_file';    }else{        return false;    }});和烧瓶电话:@app.route('/update_file', methods=['GET', 'POST'])@login_requireddef update_file():    '''Opens the filtered_file page but with updated file'''    clicked = None    if request.method == 'POST':        clicked = request.form['data']        file_to_filter = pd.read_csv(clicked, sep=';', engine='python', encoding='utf_8_sig')        table1 = update_csv(file_to_filter)        table2 = table1.to_html(classes='my_class" id = "my_id')        return render_template('3_filtered_file.html', data=table2)
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

看来您是将表数据转换为 csv 的一些 jQuery 插件。它实际上并没有在您的磁盘上创建文件。当您向服务器发出 ajax POST 请求时,您正在发送表单数据。在服务器端,您在clicked = request.form['data']这里单击的不是文件。但是您的熊猫read_csv需要 url 或缓冲区类型。您可以使用StringIO.


@app.route('/update_file', methods=['GET', 'POST'])

@login_required

def update_file():

    '''Opens the filtered_file page but with updated file'''

    clicked = None

    if request.method == 'POST':

        clicked = StringIO(request.form['data'])

        file_to_filter = pd.read_csv(clicked, sep=';', engine='python', encoding='utf_8_sig')

        table1 = update_csv(file_to_filter)

        table2 = table1.to_html(classes='my_class" id = "my_id')

        return render_template('3_filtered_file.html', data=table2)


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信