2012-03-01 12 views
0

jQueryとjQueryのUIダイアログを理解するのに少し役立ちます。メソッド= POSTで定義されたjQueryのUIダイアログフォームのサブミットGETへの変換方法

フォームを含むhtmlページを読み込むために、jQuery v1.8.18 UIダイアログとjQuery v1.7.1を使用しています。フォーム自体は、Djangoテンプレートによって生成されました。フォームに記入して「送信」をクリックすると、Djangoサーバー側に表示されているHTTPリクエストを確認しました。サーバーはGET型のAjax要求と空のGETおよびPOST辞書を要求します。

予想される結果は、実際の送信データが入ったPOSTになります。誰かがUIダイアログがPOST要求をGETに変更した方法を理解できますか?私はFirebugを使用していますが、いくつかのデバッグアイデアが必要です。ありがとう。要素#友人-要求はちょうどHTMLのアンカーである

<script> 
     $(document).ready(function() { 
      var $dialog = $('<div></div>').load('/friend-request/').dialog({autoOpen:false, title:'Friend Request', modal:true}); 
     $('#friend-request').click(function() { 
      $dialog.dialog('open'); 
       // prevent the default action, e.g., following a link 
       return false;}); 

     }); 
</script> 

これは、私はUIのダイアログを作成する方法です。私のフォームはダイアログにうまくロードされました。生成されたHTMLフォームコードを次に示します。

<form id="id-friendreq" method="post"> 
    <div style="display:none"><input type="hidden" value="12a94012df543b050d69f46f0" name="csrfmiddlewaretoken"></div> 
    <div class="ctrlHolder" id="div_id_to_user"> 
     <label for="id_to_user"> 
      To user<span class="asteriskField">*</span> 
     </label> 
     <input type="text" maxlength="15" name="to_user" id="id_to_user"> 
    </div> 
    <div class="ctrlHolder" id="div_id_message"> 
     <label for="id_message"> 
      Message<span class="asteriskField">*</span> 
     </label> 
     <textarea class="textarea" cols="40" id="id_message" name="message">Hi, please add me as your friend.</textarea> 
    </div> 
<div class="buttonHolder"> 
     <input type="submit" id="submit-id-submit" class="submit submitButton button white" value="Submit" name="submit"> 
</div> 
</form> 

答えて

0

あなたにAjaxのオプションtypeを設定していない場合:あなたが明示的に使用してPOSTリクエストを使用する必要がある場合は正直に言って、そのちょうど約データは、あなたにも

GETクエリとPOSTデータを送信することができます「POST」か、$ .post(のような便利なメソッドを使用して)、デフォルトは

http://api.jquery.com/jQuery.ajax/

+0

この設定では、実際にjQuery ajax関数を直接呼び出すわけではありません。私はちょうどUIダイアログに読み込まれる静的なフォームを提出しています。 UIダイアログはそれ用に設計されていませんか?ダイアログ内でこのフォームを送信するには明示的なajax呼び出しが必要ですか? – lastoneisbearfood

+0

はまったく必要ではありませんが、サーバーはそれを「GETタイプのajax要求」と見なします。 – charlietfl

+0

はい、私はそれがどうなったのかを理解しようとしています。送信ボタンは、コードでわかるように、単純な古いです。 – lastoneisbearfood

0

投稿方法は、データを提出する場合にのみ使用されます。

$(el).load(url,data,success) 

データを入力していない場合は、空のgetクエリと同じです。サーバー側でも、データを送信しないと、サーバーが投稿を行ったのか、リクエストを受け取ったのかをサーバーが知る方法はありません。

$.post(url,{},function(data){$('<div></div>').html(data)}); 
+0

「GET」である私は、私が提出する]をクリックする前に、フォームを記入していることを示すために、質問を編集しました。その意味で、データがあります。私が理解しようとしているのは、フォームのPOST仕様を完全にオーバーライドする仕組みだと思います。そのフォームを(UIダイアログの代わりに)独自に表示して送信すると、うまく投稿できます。 – lastoneisbearfood

+0

あなたはフォームを提出していますか?あなたはあなたのコードの中にそれのためのハンドラを持っていません –

+0

これは多分私の理解のギャップがある場所です。私は自分のフォームに付属の送信ボタンが十分であるという印象を受けました。フォームはjQuery load()を介して動的にロードされましたが、投稿が非エイジャックスであると誤って予期していました。 – lastoneisbearfood

関連する問題