0

ここで必要なことを行うために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);

どんな助けでも大歓迎です。

4

3 に答える 3

3

PHPはサーバーサイド言語です。ページを更新しないと、(AJAX を使用せずに) PHP 関連のタスクを実行することはできません。Javascript、JQuery、AJAX はすべてクライアント側です。アクションを実行するためにサーバーにアクセスする必要がないため、ページを更新せずにこれらを使用して操作を実行できます。

したがって、ページを更新したくない場合は、javascript や jQuery などのクライアント側スクリプトを使用してください。ググれば良いカレンダーを見つけることができます。

于 2013-02-22T10:45:43.450 に答える
1

Webページからのデータはサーバーに送られ、サーバーは出力を生成します。つまり、ページを開いたままにしておくと、PHPはサーバー上で実行されません。したがって、URL を要求すると、インクルードの最初から要求されたページが終了するまで、完全な PHP アプリケーションが実行されます。これはリクエストごとに継続されます。

流れをよりよく理解するための図を次に示します。

ここに画像の説明を入力

そのため、毎回ページを実行する必要があります。それは AJAX を介して行われるか、ページの更新はあなた次第です。

于 2013-02-22T11:05:21.607 に答える
1

2 つの単純な 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 には、結果をエコーする関数が含まれます。これは、成功 ( in data ) で得られます。それが役に立てば幸い :-)

于 2013-02-22T11:07:03.570 に答える