提交表单请求后取消该表单

时间:2015-08-12 21:05:21

标签: javascript forms post

是否可以取消表单提交后发出的(POST)请求?

我正在将来自数据库的大量数据直接传输到客户端进行下载(即Content-Disposition: attachment;)。为了做到这一点,我创建了一个临时表单并提交它(这样我就可以在正文中发送请求参数,并且仍然让浏览器将响应下载为文件)。

var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', '/query/stream');

var paramElement = document.createElement('input');
paramElement.setAttribute('type', 'hidden');
paramElement.setAttribute('name', 'jsonParams');
paramElement.setAttribute('value', JSON.stringify(reqParams));

form.appendChild(paramElement);

document.body.appendChild(form);
form.submit();
document.body.removeChild(form);

但是,在提交下载开始后(数据检索数据时)可能需要一到一分钟。我希望用户能够在提交后取消请求。这可能吗?

如果它有用,客户端是AngularJS,服务器端是Node.js.

* 我正在播放,因为在服务器上创建临时文件非常重要,我无法通过非流式响应发送数据,因为数据太大而无法保留服务器内存。

更新

我无法使用AJAX,因为我直接进行文件下载。在触发任何load事件之前,AJAX调用将要求将数据完全下载(到内存中)。这会导致客户端出现内存问题。

0 个答案:

没有答案