2016-07-14 41 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))'它的工作原理? –