我试图用jQuery调用Ajax,并且需要在页面加载时将一个用PHP设置的变量传递给两个单独的函数,以便按月向前或向后移动我的日历。
var ajax_load = "Loading...",
loadUrl = "calendar_backend.php",
month = parseInt(<?php echo $month ?>);
console.log(month);
month = <?php echo $month ?>;
$("#calendar_box").on("click",'#next_month',function(){
console.log(month);
$("#calendar")
.html(ajax_load)
.load(loadUrl, "month=" + month + "&go=next");
var month = ++month;
console.log(month);
});
$("#calendar_box").on("click",'#previous_month',function(){
$("#calendar")
.html(ajax_load)
.load(loadUrl, "month" + month + "&go=previous");
var month = --month;
});
我在那里有控制台调用尝试调试这个,我从第一个.log()中定义了第4个未定义的4和第三个的NaN。从这三个中我可以看到变量没有被传递到.on()处理函数。
日历生成页面包含在索引页面上,然后AJAX将用于重新生成月份的正确数据。我需要在get字符串中传递的月份才能知道我需要偏离当前月份的距离。
感谢您的帮助!!
答案 0 :(得分:0)
只是不要在函数体内使用var
关键字。 var
会在success function
内设置一个新变量。你使用decress / incresse运算符错了,它只有month++;
和month--;
var ajax_load = "Loading...",
loadUrl = "calendar_backend.php",
month = parseInt(<?php echo $month ?>);
console.log(month);
month = <?php echo $month ?>;
$("#calendar_box").on("click",'#next_month',function(){
console.log(month);
$("#calendar")
.html(ajax_load)
.load(loadUrl, "month=" + month + "&go=next");
month++; // Removed var and incressing
console.log(month);
});
$("#calendar_box").on("click",'#previous_month',function(){
$("#calendar")
.html(ajax_load)
.load(loadUrl, "month" + month + "&go=previous");
month--; // Removed var and decressing
});