Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Flask应用程序中将流文件内容作为json结构传递给AJAX_Javascript_Python_Jquery_Ajax_Flask - Fatal编程技术网

Javascript 如何在Flask应用程序中将流文件内容作为json结构传递给AJAX

Javascript 如何在Flask应用程序中将流文件内容作为json结构传递给AJAX,javascript,python,jquery,ajax,flask,Javascript,Python,Jquery,Ajax,Flask,我有下面的Flask应用程序,它基本上只是一个表单,您可以上传一个文件,从几个选项单选按钮中进行选择,后端的python脚本处理上传的文件以生成HTML 目前,我正在通过将上传的文件读取到内存而不是将其保存在本地来流式传输,因为我将把这个应用程序部署到只读文件系统。我通过csv.DictReader将这个流文件处理到字典中。。。然后将其转换为JSON对象。然后,我想将这个JSON对象传递给index.html中的AJAX函数,以便我的后端python脚本可以处理JSON文件,而不是本地保存的文件

我有下面的Flask应用程序,它基本上只是一个表单,您可以上传一个文件,从几个选项单选按钮中进行选择,后端的python脚本处理上传的文件以生成HTML

目前,我正在通过将上传的文件读取到内存而不是将其保存在本地来流式传输,因为我将把这个应用程序部署到只读文件系统。我通过csv.DictReader将这个流文件处理到字典中。。。然后将其转换为JSON对象。然后,我想将这个JSON对象传递给index.html中的AJAX函数,以便我的后端python脚本可以处理JSON文件,而不是本地保存的文件

问:将JSON结构传递给AJAX的正确方法是什么,然后在AJAX端,如何将JSON对象传递回我的下一个Flask route upload\u vals,在这里我启动python脚本

main.py

index.html

@app.route('/process_file', methods=['POST'])
def process_file():
    # Run checks on the file
    if 'file' not in flask.request.files or not flask.request.files['file'].filename:
        return flask.jsonify({'result':'False', 'message':'no files selected'})
        return flask.redirect(url_for('home'))
    file = flask.request.files['file']
    filename = secure_filename(file.filename)
    if not allowed_file(file.filename):
        return flask.jsonify({'result':'False', 'message':'Must be TXT file!'})
        return flask.redirect(url_for('home'))

    # Convert streamed file contents to json object
    contents_dict = csv.DictReader(file, delimiter='\t')
    data = []
    for line in contents_dict:
        data.append(line)
    json_data = json.dumps(data)

    # Stream file and check that places exist
    contents = csv.reader(file, delimiter='\t') 
    if not places_exist(contents):
        return flask.jsonify({'result':'False', 'message':'There is an affiliation missing from your Place list. Please re-try.'})
        return flask.redirect(url_for('home'))
    flask.session['filename'] = filename
    return flask.jsonify({'result':'True'})
    return json_data # is this right?
<script>
  $(document).ready(function(){
    $('#TheForm').on('click', '.submit_data', function(){
         var form_data = new FormData($('#myform')[0]);
         var flag = true;
         $.ajax({
           type: 'POST',
           url: '/process_file',
           data: form_data,
           contentType: false,
           cache: false,
           processData: false,
           success: function(data) {
             if (data.result === 'False'){
                $('.error_message').html(data.message)
                flag = false;
             }
             else {
                var payload = {};
               $('.form-radio').each(function(){
                  if ($(this).prop('checked')){
                    payload[$(this).data('key')] = $(this).data('value');
                  }
               });
               $.ajax({
                 url: "/upload_vals",
                 type: "get",
                 data: {'payload':JSON.stringify(payload)},
                 success: function(response) {
                   $(".my-results").html(response.data);
                 },
                });
             }
          },
       });
    });
  });
</script>