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 是一种服务器端语言。如果不刷新页面,您将无法执行 PHP 相关任务(不使用 AJAX)。Javascript、JQuery、AJAX 都是客户端。您可以在不刷新页面的情况下执行这些操作,因为它们不需要去服务器执行操作。

因此,如果您不想刷新页面,请使用 javascript 或 jQuery 等客户端脚本。如果你谷歌,你可以找到好的日历。

于 2013-02-22T10:45:43.450 回答
1

来自网页的数据进入服务器,然后服务器生成输出,这意味着如果您保持打开页面,PHP 将不会在服务器上运行。因此,当您请求 URL 时,完整的 PHP 应用程序会从包含的最开始执行,直到请求的页面结束。对于每个请求,这将继续进行。

这是更好地理解流程的图表。

在此处输入图像描述

所以每次你必须执行你的页面。它是通过 AJAX 还是页面刷新由您决定。

于 2013-02-22T11:05:21.607 回答
1

两个简单的 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 将包含回显结果的函数,您将获得成功(在数据中)。希望能帮助到你 :-)

于 2013-02-22T11:07:03.570 回答