angular - 来自 Angular 的非 XHR(非 AJAX)发布请求

标签 angular angular6

有一项要求是在我们的 Angular 应用程序中使用外部服务。外部服务有自己的用户界面。因此,我们必须在给定外部服务的 URL 上使用纯 HTTP Post 请求重定向到外部服务。

有没有办法从 Angular 进行非 AJAX post 调用,以便屏幕重定向到外部服务网页。

最佳答案

解决方案是动态创建一个表单并提交。我在服务类中创建了一个方法,如下所示,以使其工作。然后从组件调用此方法。创建了一个辅助方法 createHiddenElement 因为有更多的参数要发布。希望这对某人有帮助。

  postToExternalSite(dataToPost: SomeDataClass): void {
    const form = window.document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", "https://someexternalUrl/xyz");
    //use _self to redirect in same tab, _blank to open in new tab
    form.setAttribute("target", "_blank"); 

    //Add all the data to be posted as Hidden elements
    form.appendChild(this.createHiddenElement('firstname', dataToPost.firstName));
    form.appendChild(this.createHiddenElement('lastname', dataToPost.lastname));

    window.document.body.appendChild(form);
    form.submit();
  }

  private createHiddenElement(name: string, value: string): HTMLInputElement {
    const hiddenField = document.createElement('input');
    hiddenField.setAttribute('name', name);
    hiddenField.setAttribute('value', value);
    hiddenField.setAttribute('type', 'hidden');
    return hiddenField;
  }

关于angular - 来自 Angular 的非 XHR(非 AJAX)发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51985353/

相关文章:

angular - 为什么 Angular 不在我的 ControlValueAccessor 实现中调用 registerOnChange?

node.js - Angular 路线守卫有多安全?

javascript - 如何在使用 javascript 将数据导出到 .csv 时更改单元格类型和其他属性

angular - 隐藏列 Mat-Table Angular

html - 检测 Angular 4 中的实时窗口大小变化

angular5 - Angular 6 库可以捆绑并在 Angular 5 应用程序中使用吗?

Angular 6 : Cannot read property 'runOutsideAngular' of undefined

javascript - 如何在 Angular 6中选择多个复选框

Angular 6 ng-bootstrap 评级不起作用

javascript - 表中的行计数器