在PHP脚本中更改变量并再次运行函数,无需重新加载页面

时间:2013-02-22 10:40:13

标签: php javascript jquery ajax calendar

有人可以告诉我,如果我需要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);

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

PHP是一种服务器端语言。如果不刷新页面,则无法执行与PHP相关的任务(不使用AJAX)。 Javascript,JQuery,AJAX都是客户端。您可以使用这些操作执行操作而无需刷新页面,因为他们不需要去服务器执行操作。

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

答案 1 :(得分:1)

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

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

enter image description here

所以每次你必须执行你的页面。它是通过AJAX或页面刷新。

答案 2 :(得分: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将包含将回显结果的函数,您将获得成功(在数据中)。希望它有所帮助: - )