使用jQuery AJAX浏览PHP日历月

时间:2011-09-15 15:07:01

标签: php jquery ajax calendar

我正在使用David Walsh's calendar函数在WordPress主题中创建事件日历。我希望在几个月之间使用AJAX进行移动,但我不熟悉并且在发布和获取月份和年份变量时遇到问题。我引用了这个AJAX video tutorial

在页面模板的顶部,我有这个功能:

    function swapContent(month,year) {
        jQuery("#calendar").html("<img src='images/ajax-loader.gif'>").show();
        var url="calendar.php";
        jQuery.post(url, {contentVar: month, year}, function(data){
            jQuery("#calendar").html(data).show();
        });
    }

在calendar.php中:

    $month = (int) ($_GET['month'] ? $_GET['month'] : date('m'));
    $year = (int)  ($_GET['year'] ? $_GET['year'] : date('Y'));

    $contentVar = $_POST['month']['year'];

我上一个/下个月的控件看起来像这样:

$previous_month_link = '<a href="?month='.($month != 1 ? $month - 1 : 12).'&year='.($month != 1 ? $year : $year - 1).'" class="control" onClick="return false" onmousedown="javascript: swapContent("month", "year")">Previous Month</a>';

我在这里的所有calendar.php文件:http://pastebin.com/R9zpA3yM

提前致谢,任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

看起来你没有正确设置月份和年份。您将“月”和“年”作为字符串传递,然后不将它们设置为正确的参数名称以传递到PHP脚本中。试试这个:

function swapContent(monthVal,yearVal) {
    jQuery("#calendar").html("<img src='images/ajax-loader.gif'>").show();
    var url="calendar.php";
    jQuery.post(url, {month: monthVal, year: yearVal}, function(data){
        jQuery("#calendar").html(data).show();
    });
    return false;
}

然后在你的PHP中:

$monthVal = ($month != 1 ? $month - 1 : 12);
$yearVal = ($month != 1 ? $year : $year - 1);

$previous_month_link = '<a href="?month='.$monthVal.'&year='.$yearVal .'" class="control" onClick="swapContent("'.$monthVal.'","'.$yearVal.'");">Previous Month</a>';

而不是使用onmousedown我只需要onclick中的函数,只需确保它在我所包含的函数末尾返回false。

我不确定你的PHP脚本中是如何使用月,年和内容的,所以以下是一个假设,但看起来你只需要一些东西:

$month = (int) ($_POST['month'] ? $_POST['month']
                                : ($_GET['month'] ? $_GET['month'] 
                                                  : date('m')));

$year= (int) ($_POST['year'] ? $_POST['year']
                               : ($_GET['year'] ? $_GET['year'] 
                                                  : date('Y')));

然后相应地使用这些变量来获取数据?