我有一个普通的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'}
});
};
}]);
答案 0 :(得分:0)
好的,问题是 $ http 正在发送异步请求,因此页面无法重定向。
解决方案是发送jQuery synchronous $ .ajax(...,async:false); 。