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!");
});
我执行异步$http.delete
请求
执行success
回调功能,并显示警告框“成功”。
我点击浏览器刷新按钮
$http.delete
行未执行(使用断点调试)。相反,错误回调函数是immedialy执行。出现警告框“错误”。单击浏览器的刷新按钮
当我点击浏览器的刷新按钮时,我期待整个页面重新加载。
相反,AngularJS似乎尝试重新发送我的上一个删除查询,而不必执行$http.delete
并直接转到error
回调。
如何恢复浏览器刷新按钮的自然行为?我希望它重新加载整个页面,而不是尝试重新发送最后一个异步http请求。
答案 0 :(得分:0)
打开chrome dev工具的网络选项卡。加载您的页面并点击F5。如果你没有看到get
index.html
(或者你的基本网址是什么),那是因为角度处理了它。如果您确实看到了get
,那么您已经重新启动了该应用。
一旦你知道它是哪一个,你可以进一步调查。在httpdelete
回调中设置断点并检查callstack也可能会有所帮助。
答案 1 :(得分:0)
好的,这就是发生的事情,我的后端Nodejs + Express + MongoDB删除操作没有向客户端(浏览器)返回任何内容。从mongodb删除文档后,我认为没有必要返回任何信息。
这个副作用就像我在原帖中描述的那样。删除服务器上的文档后,如果用户使用浏览器刷新按钮刷新页面,则页面不会刷新。而是将$http.delete
请求重新发送到服务器,并在其上执行错误回调。
修改我的服务器端操作并使其在删除请求后返回json文档(例如{ success: true, message: "" }
)后,浏览器的刷新按钮的行为应该与重新加载整个单个应用程序页面{{1} }。