Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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
使用AJAX上传文件、处理并使用Flask将结果返回到Javascript_Javascript_Jquery_Python_Ajax_Flask - Fatal编程技术网

使用AJAX上传文件、处理并使用Flask将结果返回到Javascript

使用AJAX上传文件、处理并使用Flask将结果返回到Javascript,javascript,jquery,python,ajax,flask,Javascript,Jquery,Python,Ajax,Flask,我已经了解了如何使用AJAX和Flask上传文件,这样页面就不会刷新,文件就会上传到服务器的某个指定目录中。 在Python方法(upload())中,我想用一些正则表达式处理文件名,并向Javascript文件返回一个数组。 即使我试图请求一个数组,我是否仍然返回render_模板(index.html) HTML(index.HTML) 在这里上传数据包 上传您想要阅读的.pdf或.docx文件 接近 上传 Javascript $(函数(){ $(“#上传文件btn”)。单击(函数()

我已经了解了如何使用AJAX和Flask上传文件,这样页面就不会刷新,文件就会上传到服务器的某个指定目录中。 在Python方法(upload())中,我想用一些正则表达式处理文件名,并向Javascript文件返回一个数组。 即使我试图请求一个数组,我是否仍然返回render_模板(index.html)

HTML(index.HTML)


在这里上传数据包

上传您想要阅读的.pdf或.docx文件

接近 上传
Javascript

$(函数(){
$(“#上传文件btn”)。单击(函数(){
var form#u data=new FormData($('#上传文件')[0]);
$.ajax({
键入:“POST”,
url:“/uploadajax”,
数据:表格数据,
contentType:false,
cache:false,
processData:false,
async:false,
成功:功能(数据){
console.log('Success!');
},
});
});
});
蟒蛇(烧瓶)

@app.route('/uploadajax',methods=['POST'])
def upload():
file=request.files['file']
如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
返回渲染模板('index.html')
我正在尝试在$.AJAX{}部分之后的Javascript中添加这个AJAX调用,但是我做得对吗?我不确定是否可以在一个Javascript函数中调用同一个Python方法两次,或者是否有更好的方法来实现这一点

ajaxRequest=ajaxFunction()
ajax.onreadystatechange=函数(){
if(ajaxRequest.readyState==4){
if(ajaxRequest.status==200){
alert(ajaxRequest.responseText)//我希望Python将数组放入这个ajaxRequest.responseText变量,但不确定如何放入。
}
其他的
警报('XML请求出错')
}
}
open(“GET”,“uploadajax”,true);
ajaxRequest.send(空);

有什么帮助吗?谢谢。

你没有说你想要实现什么(隐藏一些div,滚动窗口…),这是一个主要问题。总结应该做的事情:
不要回来

return render_template('index.html')
但是fe。如果要通知用户上载状态,请将此调用的状态设置为

return Response('OK')
或者其他身份-诺克什么的。 然后在js中:

    success: function(data) {
        console.log('Success!');
    },
操纵反应

if (data == 'OK') {
  alert ('YAY, FILE UPLOADED');
};

如果您想返回数组,需要转换为json,而不发送任何模板html…只发送json字符串,比如jsonify(文件名)?如何让Javascript识别正在发送的内容并更改标记以匹配?非常好的代码!帮我做项目,对不起。我使用re.findall()从PDF生成一个列表,然后我想将列表返回到Javascript.Ok。因此,您只需在dict中收集数据,然后返回jsonify(这个dict),并在upload success部分使用它。