2017-01-06 19 views
2

私はAngularJSを使用しており、POSTデータを必要とするベンダーがいます。提出すると、ユーザーは自分のサイトにリダイレクトされます。アクション属性が存在する場合のAngularJSフォームの検証

<form method="post" action="https://api.chargify.com/api/v2/signups"> 
    <input type="hidden" name="secure[api_id]" value="1234" /> 
    <input type="hidden" name="secure[timestamp]" value="1301148971" /> 
    <input type="hidden" name="secure[nonce]"  value="5b2763d0-39e1-012e-858d-64b9e8d3946e" /> 
    <input type="hidden" name="secure[data]"  value="one=uno&amp;two=dos" /> 
    <input type="hidden" name="secure[signature]" value="412951d095ebbb3800dfb2126fe5073d2ab6c260" /> 
</form> 

See Chargify Direct Signups for more info

私はデータをポストするために$ HTTPサービスを使用することはできませんので、彼らは、CORSのセットアップを持っていません。私は古い学校形式でこれをしなければならないようです。私は角度バリデーションとフォーム提出の防止に関する問題に取り掛かりました。明らかに角度ignores the result of the ng-submit when an action attribute is present

さらに、フォームにアクション、データアクション、またはxアクション属性が含まれていない場合にのみ、デフォルトアクション(フォームではサーバーにリクエストを送信して現在のページをリロードすることを意味します)を防止します。

検証はHTML5ブラウザの検証には複雑すぎるため、データが無効な場合はフォーム送信を防ぐためにアクセスが必要です。私はちょっとこれに固執しています。これは解決するのは簡単な問題であるはずですが、まともな解決策が今まで私を逃れてきたようです。他の誰かがこの問題を解決したのですか?

http://plnkr.co/edit/p83VEFwJVbRjOoggfNpb?p=preview

+0

たぶん、あなたは、「プロキシ」の要求を作成することができます - (例えばカールを使用して)サービスへのリクエストを投稿しにデータを返すために$ HTTPを使用してウェブサイト上のいくつかのエンドポイントへのコールを作成し、サーバが実行してみましょうクライアント –

+1

データ( –

+0

)私が考えることができる唯一のアイデアは、[redirection-uri](https://docs.chargify.com/chargify-direct-introduction#redirection- uri)パラメータを変更し、ユーザーが戻ったときにクエリのパラメータを確認するページにリダイレクトします。 –

答えて

0

これは少しハック感じているが、私はより多くのAngularJSの解決策を見つけることができるまで、私はそれに少しのjQueryを散りばめました:私は、問題を示すために簡略化plunkerを確認作った

$("#billingForm").submit(function(e){ 
    var valid = $scope.billingForm.$valid; 
    if (valid) { 
     return true; 
    } 
    else { 
     e.preventDefault(); 
     return false; 
    } 
    }); 
関連する問題