2013-08-08 17 views
9

AngularJSを使用しない場合と同じように、共通のHTTP POSTを必要とする既存のWebアプリケーションにAngularJSを実装しています。AngularJS:通常の方法で送信してください

これは私が予想していたよりも難しいようです。ページURLは動的に生成され、PHPを使用してエコーすることはできません。私はjQueryを使用してフォームのアクションを修正しようとしましたが、どちらもうまくいかないようです。

通常の方法でフォームを送信することは本当に不可能ですか?

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <form method="post"> 
     <input type="text" name="txt"> 
     <input type="submit" name="submit"> 
    </form> 
</body> 
</html> 

そして、これはAngularJSと同じ形式である:

<!DOCTYPE html> 
<html ng-app> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> 
</head> 
<body> 
    <form method="post"> 
     <input type="text" name="txt"> 
     <input type="submit" name="submit"> 
    </form> 
</body> 
</html> 

最初の形式は、通常のフォームのポストを行い、第二の形式にはないこれは私が通常の形で何を意味するかです。 http://docs.angularjs.org/api/ng.directive:formによれば、これは設計によるものであり、私はフォーム内に「アクション」パラメータを提供することができます。それを空のままにしても機能しませんし、jQueryを使って変更することはどちらかと言えません。

+1

あなたは例のコードをしてください与えることはできますか?質問は私にとっては不明です。 – tschiela

+0

申し訳ありませんが、私はいくつかの情報を追加し、ドキュメントについてもう少し詳しく述べました。誰かが私を助けてくれることを願っています。これは不可能だとは想像できません。 – henk

+0

ページのURLをエコーできないのはなぜですか? – noj

答えて

-4

は、あなたはちょうどあなたが、HTML Form Submission Algorithmによる

<form action="" method="POST"> 

のようなポイントを空のaction属性を追加してみてくださいすることができ

<form ng-submit="submit()" ng-controller="Ctrl"> 

を使用して、コントローラ

+7

あなたはそれが何を意味するか分かりません。 AJAXを使用してフォームを送信することは、私が探しているものではなく、一般的なHTTP POSTを探しています。 – henk

1

にPOSTメソッドを追加することはできません8は

actionが空の文字列の場合は、アクションをフォーム文書の文書のアドレスにします。

これは、それに動的に構築されたURLやポストを取る必要があり、私はそれを見つけたaction属性

+0

まあ、私が言ったように、それは動作していないようです。私はAngularJSが空でないかどうかをチェックすると思います。 – henk

2

があるのでAngularJSも多少..それを許可することを意味します。それはそう、これは作業を行い

.. DOMツリーをロード中にjQueryを使ってアクションを変更すると、作業を行うことが判明したが、DOMがロードされた後、それを修正することはできません:

<!DOCTYPE html> 
<html ng-app> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3.2/jquery.min.js"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> 
</head> 
<body> 
    <form method="post" ng-submit="submit()" action> 
     <input type="text" name="txt"> 
     <input type="submit" name="submit"> 
    </form> 
</body> 
</html> 
<script type="text/javascript"> 
    $("form").get(0).setAttribute("action", "test.html"); 
</script> 

しかしこのdoesnの't:

<!DOCTYPE html> 
<html ng-app> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3.2/jquery.min.js"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> 
</head> 
<body> 
    <form method="post" ng-submit="submit()" action> 
     <input type="text" name="txt"> 
     <input type="submit" name="submit"> 
    </form> 
</body> 
</html> 
<script type="text/javascript"> 
    $(function() { 
     $("form").get(0).setAttribute("action", "test.html"); 
    }); 
</script> 

恐ろしいハックのように感じますが、私はそれで生きなければならないと思います。誰かがより良い解決策を考え出すことができない限り。

13

同じ問題が発生しました。 AngularJSが空の(または不足している)action属性を検出する限り、送信ボタン/入力が実際にフォームを送信するのを防ぎます。

action="#"属性を追加するだけで問題を解決することができました。

これは唯一の回避策で、POST URLの末尾には醜い#が存在しますが、動作します。 利点は、HTMLコード内のPOST URL(動的に生成可能)をハードコードする必要がないことです。

3

私は通常の操作を行います。

<form action="."> 
関連する問題