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

我正在尝试使用我的代码在 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.html

var 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_required

def 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)


慕侠2389804
浏览 236回答 1
1回答

繁华开满天机

看来您是将表数据转换为 csv 的一些 jQuery 插件。它实际上并没有在您的磁盘上创建文件。当您向服务器发出 ajax POST 请求时,您正在发送表单数据。在服务器端,您在clicked = request.form['data']这里单击的不是文件。但是您的熊猫read_csv需要 url 或缓冲区类型。您可以使用StringIO.@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 = 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript