如何将用户数据从Javascript用户返回到Django

时间:2015-12-02 09:12:51

标签: javascript django twitter-bootstrap django-forms

我正在使用Django和Bootstrap来创建一个简单的网站。

在我的.html文件中,我正在使用Bootstrap来显示日期选择器。

 <div id="datepicker"  ></div>

同样在.html中,我有一些快速而脏的javascript代码,当我的datepicker被点击时会更新。

    <script>
        function setup(){

            <SOME OTHER JS>

            $('#datepicker').on("changeDate", function() {
                $('#my_hidden_input').val(
                    $('#datepicker').datepicker('getFormattedDate')
                );
            });
        $(document).ready(setup);
    </script>

我想将这个新日期传回我的Django页面。基本上我想用与这个新日期有关的数据刷新页面,我的Django代码知道如何处理新的日期。

我该怎么做?我应该重定向回到我当前的页面,但是在URL中添加一些东西,以便Django的正则表达式能够获取它吗?或者我应该使用新日期进行Http GET吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Ajax从服务器获取数据而无需刷新页面

jQuery.ajax({
    type: 'POST',
    url: 'web/path/to/php/file.php',
    data: {
        post_date: $('#datepicker').val() //this is the data to post to server
    },
    success: function(res) {
        //code executed after server response. res - server response
        $('#datepicker').append(res); //modifying your html
    }
});

以file.php为例:

echo $_POST['post_date']; //accessing your date on server side and return it

如果需要刷新页面,您可以在网址中发送数据:

$('#datepicker').on("changeDate", function() {
   var val = $('#my_hidden_input').val(
        $('#datepicker').datepicker('getFormattedDate')
   );
   val = encodeURIComponent(val); //encode data for url passing
   window.location.href = '?date = ' + val; //goto url with appended parameter
});

获取您使用的数据:

$date = urldecode($_GET['date']);

答案 1 :(得分:0)

<script>
    function pass_this_to_backend(date){
    $.ajax({
      type: "POST", 
      url: "/get_date/",
      data: { 'date':date },
      dataType: "json",
      success: function(response) { alert(response); },
      error: function( rrror) { alert(error); }
    });

    }


    function setup(){

        <SOME OTHER JS>

        $('#datepicker').on("changeDate", function() {
            $('#my_hidden_input').val(
                $('#datepicker').datepicker('getFormattedDate')
            );
             pass_this_to_backend(date);
        });
    $(document).ready(setup);
</script>