2013-02-22 38 views
0

有人能告訴我,如果我需要AJAX來做我需要的東西嗎? 我有這個功能創建一個日曆。我將插入一些「前進」和「後退」箭頭鍵,以便用戶可以滾動瀏覽月份。更改PHP腳本中的變量並再次運行函數,無需重新加載頁面

所以點擊前進按鈕;我想獲得下個月 - 並顯示該月份而不是當前的月份。這意味着重新加載功能,對吧?但月份的變量不同。另外,如果不使用某種類型的JavaScript,我無法再次顯示PHP本身,對吧?

我知道我可以用JavaScript創建相同的日曆,但我想看看它如何使用PHP。我也從來沒有使用AJAX功能,我不知道我怎麼會改變要真是這樣的腳本的變量..

function create_Calendar($month,$year){ 
$i = ""; 

$days_array = array("Mon","Tue","Wed","Thur","Fri","Sat","Sun"); 

$days_in_month = cal_days_in_month(CAL_GREGORIAN,$month,$year); 

$jd = cal_to_jd(CAL_GREGORIAN,$month,date("d"),$year); 
$first_day = jddayofweek($jd,0); 
$month_name = jdmonthname($jd,3) . " " . date("Y"); 

echo("<div id='calendar'>"); 
echo("<div id='month_name'>" . $month_name . "</div>"); 
    for($i=0;$i<7;$i++){ 
     echo("<div class='day_titles'>" . $days_array[$i] . "</div>"); 
    } 
     for($i=0;$i<$first_day;$i++){ 
      echo("<div class='blank_days'></div>"); 
     } 
      for($i=1;$i<=$days_in_month;$i++){ 
       echo("<div class='day'>" . $i . "</div>"); 
      } 
echo("<div class='day_tooltip'></div>"); 
echo("</div"); 
}; 

我與調用該函數:

create_Calendar(date("m"),2013); 

任何幫助表示讚賞。

+0

嘗試http://jqueryui.com/datepicker/它可能會讓你的生活變得更容易? – Tschallacka 2013-02-22 10:43:11

回答

1

兩個簡單的ajax調用將爲您完成這項工作。使用$ .ajax進行調用,並在用戶單擊下一個或上一個按鈕時將月份名稱作爲參數發送。所有月份的預加載也可以完成您的工作,但在這種情況下,腳本將變得更加耗費資源。

UPDATE: 例如,你可以這樣調用:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#next').click(function(){ 
      var month = 'July'; 
      var year = '2011'; // or get them from the user's choice. I am hardcoding them here 
      var url = "http://domain/path/to/your/calander_function.php"; 
      $.ajax({'url' : url , 
       'type' : 'post', 
       'data' : {'month' : month , 'year' : year} , 
       'success' : function(data){ 
        // do something with your data 
       } 
      }); 

      $('#previous').click(function(){ 
       var month = 'June'; 
       var year = '2013'; // or get them from the user's choice. I am hardcoding them here 
       var url = "http://domain/path/to/your/calander_function.php"; 
       $.ajax({'url' : url , 
        'type' : 'post', 
        'data' : {'month' : month , 'year' : year} , 
        'success' : function(data){ 
         // do something with your data 
        } 
       }); 

      }); 
</script> 

calander_function.php將包含這將呼應的結果,你會成功的(數據)獲得的功能。希望它有助於:-)

+0

我確實嘗試了這一點,但不確定如何去解決這個問題。現在我會給這個適當的去,我知道我在正確的路線。非常感謝所有的答案。 – 2013-02-22 12:22:01

+0

檢查更新@ pixo-drone – Gogol 2013-02-22 12:59:39

+0

好吧,我將數據發送到服務器(月和年),但是如何在我的PHP腳本中使用它?這不會改變我的變量$月和$年,當然? 以後回家時我會試試看。感謝你目前的幫助。 – 2013-02-22 13:45:30

3

PHP是一種服務器端語言。如果不刷新頁面,則無法執行PHP相關任務(不使用AJAX)。 Javascript,JQuery,AJAX都是客戶端。您可以使用這些操作執行操作而無需刷新頁面,因爲它們無需前往服務器執行操作。

因此,如果您不想刷新頁面,請使用JavaScript或jQuery等客戶端腳本。如果你是谷歌,你可以找到很好的日曆。

+0

我也一直相信,直到我被引入到AJAX。對不起,您可以使用Ajax請求在不加載頁面的情況下抓取數據。 – 2013-02-22 10:59:07

+0

是的,的確如此。用AJAX你可以,這就是我在括號內的意思,但沒有解釋它。我會編輯它...感謝您指出它。 – Sid 2013-02-22 11:01:36

1

從網頁的數據到服務器,然後服務器生成輸出,這意味着如果您打開頁面,PHP將不會在服務器上運行。因此,當您請求一個URL時,完整的PHP應用程序將從包含開始時開始執行,直到請求的頁面結束。這將繼續爲每個請求。

下面是更好地理解流程的圖表。

enter image description here

所以每一次,你必須執行你的頁面。它通過AJAX或頁面刷新取決於你。

相關問題