使用POST方法在HTML表单中进行动态操作

时间:2014-03-10 18:48:34

标签: angularjs

我的网络应用程序必须将用户重定向到我无法控制的其他网站。该网站希望从用户那里收到一些POST参数。

如果没有角度,我将不得不使用如下形式重定向用户:

<FORM METHOD="POST" ACTION="https://otherwebsite.com/index.php"> 
  <INPUT TYPE="HIDDEN" NAME="id" VALUE="A1S2D3"> 
  <INPUT TYPE="hidden" NAME="number" VALUE="1234567"> 
  <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="Submit"> 
</FORM>

在角度,这也可以,但我希望动作网址和“数字”的值来自角度的范围。

可悲的是,当我在值/动作属性中使用ng-model或{{var}}时似乎不起作用。

是否有任何想法将用户重定向到范围内有POST参数的其他网站?

3 个答案:

答案 0 :(得分:4)

在这里,我找到了一种使用它的简单方法(有点使用)Angular。

我有一个角度函数

$scope.setAction= function(){
    document.myForm.action='http://anothersite.com';
};

其中myForm是表单的name属性。

<form action="http://asamplesite.com" method="POST" name="myForm">

看我的小提琴。 http://jsfiddle.net/nicolasmoise/f6R9x/

注意这种方式违背了“Angular Way”,因为在您的视图中,您无法看到该逻辑,它有点隐藏在控制器内部。然而,正如我所链接的问题所述,Angular不喜欢以旧方式提交表格。另一种方法是让表单通过ng-submit调用一个函数来获取动态网址并进行重定向/重新加载(可能使用$location)。这种方式可能会更长,但至少你的逻辑在你看来会更明显。

答案 1 :(得分:0)

使用ngSubmit指令,它允许您调用方法来提交表单。根据文档,如果表单包含action,data-action或x-action属性,那么它将执行默认表单操作。对于表单,表示将请求发送到服务器并重新加载当前页面。

  <script>
    function Ctrl($scope) {
      $scope.number = "1234567";
      $scope.id = "A1S2D3";
    }
  </script>

  <form ng-submit ng-controller="Ctrl" data-action="https://otherwebsite.com/index.php">
    <INPUT TYPE="HIDDEN" NAME="id" ng-model="id">
    <INPUT TYPE="hidden" NAME="number" ng-model="number">
    <input type="submit" id="submit" value="Submit" />
  </form>

答案 2 :(得分:0)

我在隐藏输入方面遇到了同样的问题(看起来像是忽略了它们)。

我使用了这个解决方案:

<INPUT TYPE="text" NAME="number" ng-model="myNumber" hidden>