Angular 1.5.7 - $ http POST请求被浏览器取消

时间:2016-06-21 16:38:11

标签: angularjs http xmlhttprequest

我遇到了一个问题,出于某种原因,我的api服务器的$ http帖子正在浏览器级别取消,这会错误地触发我的错误处理程序逻辑。我拖尾服务器日志,我可以验证服务器实际上是在接收请求并返回200状态代码 - 一切都很好。

似乎某些事情导致请求取消 mid-request !在xhr.abort的Angular源代码中设置断点(使用Chrome浏览器的Web检查器)永远不会被命中,尽管在Safari中尝试这一点会导致相同的行为。

我只能看到chrome中的临时标题,其中请求被标记为已取消。在Safari中,请求继续"旋转" ,就像它仍处于活动状态一样(在错误处理程序内部打破)。

我可以在这里发布我的代码,但它非常香草,而且我不相信这个问题就在这里:

引发剂

Service.validate(token, email)
.then(function(response){
  if (!response.data.is_valid) {
    // Do a thing
  }
}).catch(function(err){
  // Do a thing
});

用户方法

Service.validate = function(token, email) {
  return $http.post(configs.apiUrl + '/validate', {
    email: email,
    token: token
  });
};

如果我能提供任何其他信息可以提供更多有关问题的信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

我实际上只是在Angular中构建了一个api前端,而我从服务中获取$ http的唯一方法是返回一个promise。

Service.validate = function(token, email) {
    return new Promise(
        function(resolve, reject) {
            $http
                .post(configs.apiUrl + '/validate', {
                    email: email,
                    token: token
                })
                .then(
                    function success(response) {
                        resolve(response.data);
                    },
                    function error(err) {
                        reject(err);
                    });
        });
}

然后在控制器中代码应该是相同的。

这似乎也符合ES6标准。

相关问题