【问题标题】:Change variable in PHP script and run function again, without reloading page更改 PHP 脚本中的变量并再次运行函数,无需重新加载页面
【发布时间】:2013-02-22 20:59:15
【问题描述】:

有人可以告诉我是否需要 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 javascript jquery ajax calendar


【解决方案1】:

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

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

【讨论】:

  • 在我被介绍给 AJAX 之前,我也和你一样相信。抱歉,您可以使用 Ajax 请求获取数据而无需再次加载页面。
  • 是的,是的。使用 AJAX 可以,这就是我在括号内的意思,但未能解释它。我会编辑它...感谢您指出。
【解决方案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 将包含回显结果的函数,您将在成功中获得该结果(在数据中)。希望它有所帮助:-)

【讨论】:

  • 我确实尝试过这个,但不确定如何在调用中包含参数。现在我知道我在正确的路线上,我会适当地进行。非常感谢所有的答案。
  • 好的,我正在向服务器发送数据(月和年),但是如何在我的 PHP 脚本中使用它呢?这肯定不会改变我的变量 $month 和 $year 吗?等我回家后我会试一试。感谢您迄今为止的帮助。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2023-01-20
    相关资源
    最近更新 更多