在Angular POST之后从Rails控制器重定向

时间:2016-12-11 15:15:47

标签: ruby-on-rails angularjs

我有一个普通的Rails应用程序(没有SPA),在一个页面上我只使用Angular 最后,我正在向服务器发送一个带有表单数据的POST(它正在运行),作为POST的最后一步,我想重定向到另一个页面。

Rails控制器是这样的:

def save
  data = params[:data]
  respond_to do |format|
    format.js { render :js => "window.location.href = '/products';" }
  end
end

但没有发生任何事情。

My Angular帖子很简单:

app.service('httpService', ['$http', function($http) {
  this.post = function(data) {
    $http({
      method  : 'POST',
      url     : '/cart/save',
      data    : { data: data },
      headers : {'Content-Type': 'application/json'}
    });
  };
}]);

就像这样调用服务,没有承诺:

this.save = function(ids) {
  httpService.post(ids);
};

有什么想法吗?感谢。

修改
我也试过将mime-type更改为'application / javascript',但没有成功:

app.service('httpService', ['$http', function($http) {
  this.post = function(data) {
    $http({
      method  : 'POST',
      url     : '/cart/save',
      data    : { data: data },
      headers : {'Content-Type': 'application/javascript'}
    });
  };
}]);

1 个答案:

答案 0 :(得分:0)

好的,问题是 $ http 正在发送异步请求,因此页面无法重定向。

解决方案是发送jQuery synchronous $ .ajax(...,async:false);