簡體   English   中英

更改PHP腳本中的變量並再次運行功能,而無需重新加載頁面

[英]Change variable in PHP script and run function again, without reloading page

有人可以告訴我是否需要AJAX來完成此處的操作嗎? 我有創建日歷的功能。 我將插入一些“前進”和“后退”箭頭鍵,以便用戶可以滾動瀏覽月份。

因此,單擊前進按鈕; 我想獲得下個月-並顯示該月份而不是當前月份。 這意味着重新加載功能,對嗎? 但是月份的變量不同。 另外,如果不使用某種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);

任何幫助表示贊賞。

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

因此,如果您不想刷新頁面,請使用javascript或jQuery之類的客戶端腳本。 如果您使用Google,可以找到好的日歷。

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

這是用於更好地了解流程的圖。

在此處輸入圖片說明

因此,每次您必須執行頁面。 是通過AJAX還是頁面刷新取決於您。

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

更新:例如,您可以這樣調用:

<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將包含將回顯結果的函數,您將獲得成功(在數據中)。 希望能幫助到你 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM