我有一个角度应用程序,需要向供应商提交表单。每次运行该进程时,供应商都会指定必须提交表单的URL。然后应用程序提交到该URL。然后,供应商将客户端的浏览器重定向到我的应用程序在前面的步骤中指定的页面。
我可以在表单操作中使用硬编码的url进行提交。例如:
<form method="post" ng-submit="preSubmit()"
action="https://posttestserver.com/post.php">
但我需要提交供应商刚刚指定的网址。我将此值存储为$ scope.formActionUrl。
因此,我尝试将表单提交给formActionUrl:
的值<form method="post" ng-submit="preSubmit()" action="{{formActionUrl}}">
它没有提交。没有错误记录到控制台。
如果我在表单上执行inspect-element,它会告诉我表单操作已正确分配给存储在formActionUrl中的值。
我的preSubmit函数在两种情况下都会执行。
我需要提交的网址是https。
有人知道如何让它发挥作用吗?
答案 0 :(得分:2)
我认为这个问题是由于角度信任Urls的原因。如果你阅读https://docs.angularjs.org/api/ng/service/$sce,它会更详细地解释这一点。
通过将$ sce服务注入您的控制器,您可以执行以下操作:
$scope.formActionUrl = $sce.trustAsResourceUrl("https://posttestserver.com/post.php");
告诉AngularJS这个网址是可信的。然后它将出现在表单的操作中。
这是一个快速的小提示,如果你在渲染的HTML中查看动作就在那里,如果你删除$ sce它将无效。