【发布时间】:2014-07-30 22:51:35
【问题描述】:
我有一个用 Angularjs 编写的上传视图。我想确保在上传期间页面是否重新加载或关闭;为保持一致性,应删除所有上传到服务器的文件。所以我尝试如下:
// this function is under /upload view, and inside UploadController
window.onunload = function () {
$http.delete(...call delete on my server..);
};
但是,DELETE 没有到达服务器,我错过了什么?
【问题讨论】:
-
onunload事件可能会触发,但它不会以任何方式停止浏览器,它仍会重新加载页面,因此无法保证 ajax 调用会在页面重新加载之前完成,这就是为什么通常不这样做,它往往会失败。 -
但我不等待任何结果,只是如你所见那样触发它,没有回调。有什么解决方法吗?
-
仍然无法保证会发送任何内容。您是否在其中放置了一个 console.log 以查看是否发生火灾?
-
您是否考虑过在上传的完成事件中添加最终的 ajax 调用?在服务器上,您可以查找完成回调以“保留”文件。
-
@anvarik 您正在等待结果...您正在进行 HTTP 调用。仅仅因为您的代码不关心响应是什么,因此底层调用必须如此。即使它在响应之前退出,它也可能在网络连接建立之前退出。
标签: javascript ajax angularjs