目前我有一个JavaScript方法提交表单POST并在新窗口中打开。我想在AngularJS中重写它。
这是现有的方法。传入的3个参数只会影响POST上的帖子URL和一些数据值。
var login = function(postUrl, samlResponse, samlDomain){
var form = $('<form></form>');
form.attr('method', 'post');
form.attr('action', postUrl);
form.attr('target', '_blank');
var field = $('<input></input>');
field.attr('type', 'hidden');
field.attr('name', samlResponse);
field.attr('text-wrap','none');
field.attr('value', 'response-value');
form.append(field);
var field2 = $('<input></input>');
field2.attr('type', 'hidden');
field2.attr('name', 'RelayState');
field2.attr('value', samlDomain);
form.append(field2);
$(document.body).append(form);
form.submit();
}
这是我尝试使用$ http
在AngularJS中执行此操作$scope.login = function(postUrl, samlResponse, samlDomain) {
var tabWindowId = window.open('about:blank', '_blank');
var data = {
SAMLResponse: samlResponse,
RelayState: samlDomain
}
$http.post(postUrl, data).then(function (response) {
tabWindowId.location.href = response.headers('Location');
});
}
我还收到以下错误,因为该网站不允许我访问该回复。我不一定需要访问响应,我只想在新窗口中打开它。
XMLHttpRequest cannot load {{postUrl}}. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:7631' is therefore not allowed access.
我应该如何完成我尝试使用AngularJS的内容?
我还考虑将表单添加到HTML模板中,但将其隐藏在ng-hidden中。然后,我必须以某种方式从我的AngularJS控制器中触发表单提交,这似乎是倒退。
答案 0 :(得分:0)
我最终把登录功能完全放在我的AngularJS控制器中。对此不太满意,因为我使用了jquery $(document.body).append(form)。但这是一个快速的解决方案,希望看到其他答案。