AngularJS Force提交不要发送一些隐藏的输入值

时间:2016-07-14 09:32:32

标签: javascript angularjs

我有一个带角度应用的页面。一切顺利,最终PHP捕获输入中的所有值,除了'prods'字段为空

HTML代码

<form name="goToPaymentForm" id="goToPaymentForm" ng-form-commit action="payment.php" method="POST">
      <input type="hidden" id="payment_method" name="payment_method" ng-value="payment" />
      <input type="hidden" id="prods" name="prods" ng-value="prods" />
      <input type="hidden" id="terms" name="terms" ng-value="legalTermsAccepted" />
    </form>

Angular Code

app.directive("ngFormCommit", [function(){
    return {
        require:"form",
        link: function($scope, $el, $attr, $form) {
            $form.commit = function() {
                $el[0].submit();
            };
        }
    };
}]);

$scope.goToPayment = function($form){
    $scope.prods = JSON.stringify($scope.cart);
    $form.commit();
}

在控制台中我抓住了这个文字:

  

资源解释为文档但使用MIME类型application / json

传输

为什么我不使用AJAX发送?我提交表单是因为我有一个控制器,它将浏览器重定向到适当的安全支付平台(尽管有javascript重定向方法,用户无法与此交互)。为什么我做错了?为什么我的prods隐藏字段有空值?

最终的PHP结果

{
    payment_method: "paypal",
    prods: "",
    terms: "true"
}

1 个答案:

答案 0 :(得分:1)

我认为你应该使用ng-model指令绑定prods,这样你就可以在AngularJS中获得它的价值。像这样:

<input type="hidden" ng-model="prods" id="prods" name="prods" ng-value="prods" />

以下是有关此指令的文档:https://docs.angularjs.org/api/ng/directive/ngModel