有很多这样的问题,但没有一个能完全理解。 我需要复制的旧功能使用 Angular JS 创建一个表单,附加它,然后提交。它同时发出带有数据和重定向的 POST 请求。我不打算像那样按字面意思运行它...如果我按字面意思通过 HttpClient 运行 Post 请求,然后重定向到 URL,最终用户基本上只会向该 URL 发出 GET 请求。因此,这必须以某种方式通过表单来完成。
一个服务运行这个函数,所以没有直接关联的模板文件。
我们正在复制旧的 AngularJS 代码。旧代码创建一个表单元素,添加内容,将其直接附加到 DOM,然后提交:
var input = angular.element('<form>', {
action: '/someUrl.go',
method: 'POST'
});
form.append(angular.element('<input>', {
value: someValue,
name: someKey
}));
form.appendTo('body').submit();
我正在寻找一种更好的方法来在 Angular 8 中做同样的事情。 我知道我可以只使用 Javascript 和 DOM 操作,但必须有更好的方法。
我觉得按照这些思路使用 Javascript 是不对的:
let form = document.createElement('form');
form.action = '/someUrl.go';
form.method = 'POST';
let input = document.createElement('input');
input.name = "someKey";
input.value = "someValue";
input.type="hidden";
form.appendChild(input);
document.body.appendChild(form);
form.submit();
我确实浏览了关于这个主题的答案 ( JavaScript post request like a form submit ),但它们仍然是 DOM 操作、javascript 或 jQuery。 我怎样才能使用 typescript 和 angular 的工具箱“正确地”做到这一点?
最佳答案
var form = document.createElement("form");
form.method = "POST";
form.action = "https://somewebsite.comd/somepage";
form.style.display = 'none';
// form['Content-Type'] = 'application/x-www-form-urlencoded';
// form['Accept'] = 'application/json';
// above attributes are not valid
var account_number = document.createElement("input");
account_number.value='xxxxxxxxx';
account_number.name='account_number';
form.appendChild(account_number);
document.body.appendChild(form);
form.submit(); // will submit the form
关于Angular 8 - POST + 重定向与提交 HTML <form> 完全一样,但不使用 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61113841/