2015-12-02 114 views
1

我正在使用Django和Bootstrap創建一個簡單的網站。如何從Javascript用戶獲取用戶數據返回到Django

在我的.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的正則表達式可以檢索它?或者我應該使用新的日期做一個Http GET?

+1

在Ajax調用傳遞此。 – AceLearn

回答

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']); 
+0

感謝您的快速響應。這將刷新我的網頁與新的日期?爲什麼我們要做「POST」?我以爲只有當我們想更新後端時才使用「POST」。在這種情況下,我只想用新的日期刷新頁面。無需後端更新。感謝 – user3240688

+0

@ user3240688頁面不會被刷新,你的HTML將通過代碼'success'塊追加。當你需要的東西發佈到服務器,並得到響應 –

+0

我本來應該在我原來的問題更加清晰POST使用。我確實希望頁面得到刷新。我可以編寫我的Django代碼,以便在給定新日期的情況下提供相關數據。我只需要知道新的日期將在哪裏給我。那麼我們還需要ajax命令嗎? @Sam – user3240688

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

感謝您的快速響應。這將刷新我的網頁與新的日期?爲什麼我們要做「POST」?我以爲只有當我們想更新後端時才使用「POST」。在這種情況下,我只想用新的日期刷新頁面。沒有後端更新要求。 – user3240688