浏览器刷新发送最后一次$ http调用

时间:2014-02-28 03:05:50

标签: javascript html5 angularjs

AngularJS 1.2.13

var httpdelete = $http.delete("/api/categories/" + id);

httpdelete.success(function(data){
    alert("Success");
});

httpdelete.error(function(data, status, header, config){
    alert("Error!");
});
  1. 我执行异步$http.delete请求

  2. 执行success回调功能,并显示警告框“成功”。

  3. 我点击浏览器刷新按钮

  4. $http.delete行未执行(使用断点调试)。相反,错误回调函数是immedialy执行。出现警告框“错误”。单击浏览器的刷新按钮

  5. 后,没有请求进入服务器

    当我点击浏览器的刷新按钮时,我期待整个页面重新加载。

    相反,AngularJS似乎尝试重新发送我的上一个删除查询,而不必执行$http.delete并直接转到error回调。

    如何恢复浏览器刷新按钮的自然行为?我希望它重新加载整个页面,而不是尝试重新发送最后一个异步http请求。

2 个答案:

答案 0 :(得分:0)

打开chrome dev工具的网络选项卡。加载您的页面并点击F5。如果你没有看到get index.html(或者你的基本网址是什么),那是因为角度处理了它。如果您确实看到了get,那么您已经重新启动了该应用。

一旦你知道它是哪一个,你可以进一步调查。在httpdelete回调中设置断点并检查callstack也可能会有所帮助。

答案 1 :(得分:0)

好的,这就是发生的事情,我的后端Nodejs + Express + MongoDB删除操作没有向客户端(浏览器)返回任何内容。从mongodb删除文档后,我认为没有必要返回任何信息。

这个副作用就像我在原帖中描述的那样。删除服务器上的文档后,如果用户使用浏览器刷新按钮刷新页面,则页面不会刷新。而是将$http.delete请求重新发送到服务器,并在其上执行错误回调。

修改我的服务器端操作并使其在删除请求后返回json文档(例如{ success: true, message: "" })后,浏览器的刷新按钮的行为应该与重新加载整个单个应用程序页面{{1} }。