2017-07-13 11 views
0

フォームの値とfromtill変数の値をPythonに渡そうとしています。しかし、それは、変数の形式や値の移転や値になります。jquery:フォームを提出し、変数の値をPythonに渡します

私はPythonで変数は以下の形式で表示されvar a = $('#form').serialize();変数fromtill投稿場合のみvar a = $('#form').serialize();次に、Pythonで、私は自由にform.projects.data

を適用することによって値を取得することができるポスト場合:projects=1およびこれにより追加の処理が行われます。

{% set d_from, d_till = from_till %} 

{% block module_scripts %} 
    {{ super() }} 
    <script> 
     var from = '{{ d_from.strftime("%m/%d/%Y") }}'; 
     var till = '{{ d_till.strftime("%m/%d/%Y") }}'; 

     $(function my() { 
      $("#reservation").daterangepicker({ 
       "locale": { 
        "format": "DD/MM/YYYY" 
       }, 
       "opens": "right", 
       "showDropdowns": true, 
       "showWeekNumbers": true 
      }, function (start, end, label) { 
       from= start.format('MM/DD/YYYY'); 
       till = end.format('MM/DD/YYYY'); 
      }); 
     }); 

     $("#go").click(function() { 
      var a = $('#form').serialize(); 
      $.post(
       '{{ url_for("reporting_backoffice.download_report") }}', { 
        a:a, 
        d_from: from, 
        d_till: till 
       } 
      ); 
     }); 
    </script> 

{% endblock %} 

{% block report_block_content %} 
     <form id="form"> 
     <div class="form-group"> 
      <div class="input-group"> 
       <div class="input-group-addon"><i class="fa fa-calendar"></i></div> 
       <input type="text" class="form-control pull-right" id="reservation" 
         value="{{ d_from.strftime("%m/%d/%Y") }} - {{ d_till.strftime("%m/%d/%Y") }}"> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="col-lg-6"> 
       {{ wtf.form_field(form.projects, class="form-control select2") }} 

       <button class="btn btn-primary" id="go">{{ _("Download report") }}</button> 
      </div> 
     </div> 

    </form> 

を教えてください、多分PythonのにPOSTデータをより正確かつ簡単な方法はありますか?

答えて

1

手動回オブジェクトを変換するために、$.param()を使用して、文字列などの追加項目を追加することができ

var formData = $('#form').serialize(), 
    times = { d_from: from, d_till: till }, 
    postDataString = formData + '&' + $.param(times); 

$.post('{{ url_for("reporting_backoffice.download_report") }}', postDataString); 

デモ:

var formData = $('#myForm').serialize(), 
 
    times = { d_from: 'xxxx', d_till: 'yyyy' }, 
 
    postDataString = formData + '&' + $.param(times); 
 
    
 
console.log(postDataString)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="myForm"> 
 
    <input name="AAA" value="a"> 
 
    <input name="BBB" value="b"> 
 
</form>

1
$(function() { 
    $("#form").on("submit", function() { 
    var $this = $(this); 
    $.ajax({ 
     url: '{{ url_for("reporting_backoffice.download_report") }}', 
     data: $this.serialize(), 
     method: "POST", 
     success: function(data) { 
     //Here if u have to do something with the response 
     } 
    }); 
    }) 
}); 

ここでは、Pythonではクエリ文字列オブジェクトに変数があります。

PS:フォーム入力に属性 "name"を設定しないと、$(this).serialize()は役に立たず、変数はPythonに渡されません。

関連する問題