2016-07-14 40 views
0

我有一个角度应用程序的页面。一切顺利,最终PHP可以捕获来自除“电棒”场至极输入所有的值是空AngularJS强制提交不发送一些隐藏的输入值

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> 

角码

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类型的应用程序/ JSON

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

最终结果PHP

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

,如果我做'的console.log($ scope.prods);'之前提交()函数的值设置完美。 –

回答

1

我想你应该绑定的NG-模型指令的刺针,这样你可以得到它在AngularJS值。就像这样:

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

下面是关于这个指令的说明:https://docs.angularjs.org/api/ng/directive/ngModel

+0

同样的结果,但谢谢你的回应。也许它可能是价值或某个角色的长度? –

+0

呃,问题其实是因为你通过标准表单提交发送JSON。尝试将此属性添加到表单标记中,如下所示:

。参考:https://www.w3.org/TR/html-json-forms/ –

+0

那么为什么如果我使用jQuery的角码,如$('#prods')。val(JSON.stringify($ scope .cart))'它的工作原理? –