$ http邮件挂起

时间:2014-07-14 17:50:47

标签: javascript angularjs redirect post

我正在尝试创建一个显示所有论坛帖子的页面...一切正常,但我注意到在我创建帖子后(当它重定向显示所有帖子时) - 在firebug中,后调用挂了很长时间。但是,数据会通过发送,即使看起来后呼叫仍处于待处理状态...因为它显示在包含所有帖子的页面上,之后会立即加载。这就是我现在正在做的事情。

post controller(post.js):

'use strict';

angular.module('appApp')
.controller('PostCtrl', function ($location, $scope, $http) {
  $scope.errors = {};
  $scope.post;

  $scope.postit = function(form) {
    $scope.submitted = true;

    if(form.$valid) {
        console.log($scope.post.posttitle + " this is $scope.post");
        $http.post('/api/post', $scope.post).success(function() {console.log("no errors whoohoo")});
        $location.path('/forum');
    }
  };
});

正如您所看到的,我现在正在执行调用后行的重定向($location.path)。重定向工作得很好......但是 - 如果我尝试将重定向放在success函数中:

$http.post('/api/post', $scope.post).success(function() {$location.path('/forum'); console.log("no errors whoohoo")});

重定向永远不会发生,它只是挂在电话后。有谁知道发生了什么?我认为帖子调用应该只需要几毫秒才能完成(它只是存储帖子标题和内容)。

无论我采用哪种方式,帖子都会挂起......这只是第二种方式不会重定向页面。

更新

正如评论中所建议的那样,我的服务器端代码出了问题 - 我可能已经解决了这个问题。

当我想列出页面上的所有帖子时,这是被调用的函数(api.js):

exports.posts = function(req, res) {
  return Post.find(function (err, posts) {
    if (!err) {
      console.log(posts + " server side posts function route");
      return res.json(posts);
    } else {
      return res.send(err);
    }
  });
};

console.log消息永远不会出现,所以这必须是它被挂起的地方......任何想法?

调用此函数的代码区域如下所示:

app.route('/api/post')
    .get(api.posts);

这是我的快速路线之一。

1 个答案:

答案 0 :(得分:0)

事实证明,使用$location.path('/xxx')还不够,我还需要在快速方面使用res.redirect来实现重定向。 (不得不同时使用)。