【发布时间】:2014-08-31 09:59:24
【问题描述】:
我正在尝试通过在文件上传之前而不是在呈现表单时延迟它们的生成来解决过期的上传 url。我发现的一个解决方案是在表单提交或按钮单击事件上执行此操作,如下所示:
$('#btn-upload').click(function(event){
event.preventDefault();
var uploadUrl = '';
$.get( "/generate_upload_url", function(data) {
uploadUrl = data;
});
$('#my-form').attr('action', uploadUrl);
});
在服务器端,我有一个 Handler 可以生成上传网址,如下所示:
class GenerateUploadUrlHandler(BaseHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload')
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write(upload_url)
我希望当我单击按钮生成新的上传 url 并在那里发出 POST 请求时,但会发生什么是表单的操作充满了延迟,并且 POST 请求是针对错误的 URL 完成的。我怀疑这可能是因为我正在执行异步 GET 请求并且我的表单同时提交,但我不确定,因为我在这里看到了类似的示例: http://blog.notdot.net/2010/04/Implementing-a-dropbox-service-with-the-Blobstore-API-part-3-Multiple-upload-support
【问题讨论】:
-
我看到你在使用
event.preventDefault();它会阻止你的表单在点击提交按钮时被提交。您确定正在调用 click 事件吗? -
是的,需要
preventDefault(),因为我通过其他地方的文件上传接口提交表单。
标签: javascript jquery python google-app-engine blobstore