我正在使用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
提前致谢,任何帮助都非常感谢。
答案 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')));
然后相应地使用这些变量来获取数据?