【发布时间】:2019-08-15 10:25:13
【问题描述】:
我需要使用 angular typescript 向 3rd 方支付提供商执行表单 POST,然后还要进行重定向。如果我通过标准 html 页面提交标准表单,则表单提交会自动重定向到第三方支付提供商托管的支付页面,但当我在 Angular 中执行 HttpClient.post 时不会。
我查看了 observables 和注入器,看看是否有帮助,但我搜索和发现的任何东西似乎都无法解决这个特定问题。虽然我在不同的角度版本之间阅读了很多不同的问题和解决方案,但我可能已经失去了一些明显的答案。
我不使用隐藏字段的隐藏表单的原因是因为我以后需要能够通过移动(Ionic)应用程序来做同样的事情,并且我需要使用他们内置的 HttpClient 以及普通的 HttpClient标准网页。
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
@Component({
selector : 'app-paymenttest-page',
templateUrl : 'paymenttest.page.html',
styleUrls : ['paymenttest.page.scss']
})
export class PaymentTestPage implements OnInit {
constructor(private http : HttpClient) {
}
private void makePayment(url: str, formData: FormData): void {
let headers = new HttpHeaders({'Accept' : 'text/html' });
this.http.post(url, formData, {
headers : headers,
responseType : 'text',
})
.subscribe(
(res) => {
console.log('post res');
console.log(res);
window.location.href = res.url;
// How do I simulate a form submit redirect with res.body here?
},
(err) => {
console.log('post err');
console.log(err);
});
}
}
我希望能够进行第 3 方托管页面重定向,但我得到的只是来自第 3 方的 html 文本响应。我在进行纯 html 表单提交时也得到了这一点,但不知何故,纯 html 表单提交也处理了重定向。
-- 编辑 我得到的响应是来自我发布到的 URL 的实际 HTML 有效负载,并且期望从该 URL 提供。所以问题是标准的 html 表单提交如何导航到 POST url 并从那里提供返回的内容?
【问题讨论】:
-
当您说您需要提交响应正文“与”重定向时,您是什么意思?
-
首先,如果您拨打
window.location.href = res.url;,那么您已经在那里丢失了表格。您是重定向到应用程序中的某个页面还是外部的某个页面? -
我需要重定向到我的应用程序之外的页面。我从调用中返回了一个 html 响应正文,但我不确定这是否有任何相关性。我知道
window.location.href = res.url;不是我需要做的,只是显示我认为我需要重定向的位置
标签: angular typescript