使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
Use AJAX to upload a file, process, and return a result to Javascript using Flask
我已经学会了如何使用AJAX和Flask上传文件,这样页面就不会刷新,文件就会上传到指定目录中的服务器。在Python方法(upload())中,我想用一些正则表达式处理文件名,并向Javascript文件返回一个数组。即使我试图请求一个数组,我还会返回render_template(index.html)吗?
HTML(index.HTML)
<form id="upload-file" role="form" action="sendQuestions" method="post" enctype="multipart/form-data">
<div class="modal-body">
<label for="file"><b>Upload packet here</b></label>
<input type="file" name="file">
<p class="help-block">Upload a .pdf or .docx file you want to read.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="upload-file-btn" type="button" class="btn btn-primary" data-dismiss="modal" value="Upload">Upload</button>
</div>
</form>
Javascript
$(function() {
$('#upload-file-btn').click(function() {
var form_data = new FormData($('#upload-file')[0]);
$.ajax({
type: 'POST',
url: '/uploadajax',
data: form_data,
contentType: false,
cache: false,
processData: false,
async: false,
success: function(data) {
console.log('Success!');
},
});
});
});
Python(烧瓶)
@app.route('/uploadajax', methods=['POST'])
def upload():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return render_template('index.html')
我正在考虑在$.AJAX{}部分之后的Javascript中添加这个AJAX调用,但我做对了吗?我不确定是否可以在一个Javascript函数中两次调用同一个Python方法,或者是否有更好的方法。
ajaxRequest = ajaxFunction()
ajax.onreadystatechange = function() {
if (ajaxRequest.readyState === 4) {
if (ajaxRequest.status === 200) {
alert(ajaxRequest.responseText) //I want the Python to put the array into this ajaxRequest.responseText variable, not sure how.
}
else
alert('Error with the XML request.')
}
}
ajaxRequest.open("GET", 'uploadajax', true);
ajaxRequest.send(null);
有什么帮助吗?谢谢
你没有说出你想要实现的目标(隐藏一些div,滚动窗口…),这是一个主要问题。总结应该做的事情:
不返回
return render_template('index.html')
但是fe。如果你想通知用户上传状态,请像一样为这个调用设置状态
return Response('OK')
或者其他状态-NOTOK之类的。然后在js:中
success: function(data) {
console.log('Success!');
},
操纵响应
if (data == 'OK') {
alert ('YAY, FILE UPLOADED');
};
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- jQuery使用api获取typeform结果
- 根据条件检查数据库结果
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
- 在jQuery中使用来自GET请求的信息来通过Flask显示转换后的结果