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

How to get user data from Javascript user back to Django

本文关键字:用户 数据 返回 Django 用户数 Javascript      更新时间:2023-09-26

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

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

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

同样在.html中,我有一些快速而肮脏的javascript代码,当我的日期选择器被点击时,这些代码会被更新

    <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的regex能够接收它?或者我应该使用新日期将其设为Http GET吗?

<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>

您可以使用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

如果您确实需要刷新页面,您可以在url:中发送数据

$('#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']);