有人可以告诉我,如果我需要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);
感谢任何帮助。
答案 0 :(得分:3)
PHP是一种服务器端语言。如果不刷新页面,则无法执行与PHP相关的任务(不使用AJAX)。 Javascript,JQuery,AJAX都是客户端。您可以使用这些操作执行操作而无需刷新页面,因为他们不需要去服务器执行操作。
因此,如果您不想刷新页面,请使用javascript或jQuery等客户端脚本。如果你谷歌,你可以找到好的日历。
答案 1 :(得分:1)
来自网页的数据进入服务器然后服务器生成输出,这意味着如果你继续打开页面,PHP将不会在服务器上运行。因此,当您请求URL时,完整的PHP应用程序从包含的一开始就执行,直到请求的页面结束。这将继续为每个请求。
以下是更好地理解流程的图表。
所以每次你必须执行你的页面。它是通过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将包含将回显结果的函数,您将获得成功(在数据中)。希望它有所帮助: - )