Jquery and Flask: how to understand the 'return false' in form submit function
本问题已经有最佳答案,请猛点这里访问。
在我的项目中,我使用python flask作为服务器端,使用JS作为前端。该项目允许用户选择一张照片,并使用Ajax Post方法将照片发送到服务器端。服务器端将对这张照片进行图像处理,并将有关图像的一些JSON格式的数据发送回前端。JS代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | $(document).ready(function(){ $("form").submit(function() { var form_data = new FormData($('#upload-file')[0]); $.ajax({ type: 'POST', url: '/upload', data: form_data, contentType: false, cache: false, processData: false, async: false, success: function(result) { var ctx = document.getElementById("result").getContext("2d"); res = JSON.parse(result) var data = { labels: res['sentiment'], datasets: [ { label:"Face Analysis", fillColor:"white", data: res['score'] } ] }; var myLineChart = new Chart(ctx).Bar(data, { showScale: false }); }, }); return false; // so that form doesn't try to complete post }); |
(});
我有一个困惑的地方,最后一行
烧瓶路线如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @app.route('/upload', methods=['POST']) def upload_file(): if request.method == 'POST': #print"post method" 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 redirect(url_for('uploaded_file',filename=filename)) result = image_analysis(os.path.join(app.config['UPLOAD_FOLDER'], filename)) print type(result) return json.dumps({'sentiment':result.keys(),'score':result.values()}) #return json.dumps({'aftervalue':"baoqger"}) |
如果单击提交按钮,浏览器将提交带有提交按钮的表单,除非在返回
其最初目的是验证:
(a) user enters data and clicks submit,
(b) js code is run to do form validation,
(c) form submit is prevented if validation code returnedfalse .
当然,我们现在有了Ajax,它可以自己提交或者做其他魔术。为了防止浏览器自己进行(另一个)提交,可能总是需要使用
类似的行为也存在于超链接中:如果一个