2012-04-05 60 views
0

我想用jQuery调用Ajax,并且需要将页面加载时使用PHP设置的变量传递给两个单独的函数,以便将日历向前或向后移动几个月。jQuery选择器回调函数中的全局Javascript变量

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; 
}); 

我在那里的控制台呼叫尝试调试这一点,我得到4从第一.LOG()从第二个错误,并从第三NaN的。从这三个我可以看到,该变量没有传递到.on()处理函数。

日历生成页面被包含在索引页上,然后AJAX将被用来重新生成月份的正确数据。我需要在get字符串中传递的月份来知道我需要抵消的当前月份有多远。

感谢您的帮助!

+2

您需要的功能,以摆脱'var'关键字。另外,当你使用增量/减量运算符时,你也不应该使用赋值;只需要'++ month'或'--month'就可以了。 – Pointy 2012-04-05 20:25:35

回答

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 
}); 
+0

好的,它工作吗?或者你有更多的错误? – 2012-04-05 20:57:27

+0

我更新了jQuery网站[jQuery的工作原理](http://docs.jquery.com/How_jQuery_Works#Callback_with_arguments)的建议和建议,并设置了调用jQuery.on(“click”),功能next_month(月){ \t console.log(month); \t $(“#calendar”)。html(ajax_load).load(loadUrl,“month =”+ month +“&go = next”); month ++; console.log(month);} (),“#next_month',function(){next_month(month);});)'但是当我再次点击它仍然使用月的原始值,并没有更新。 – Rockstar04 2012-04-05 20:59:34

+0

Got已结束!感谢一堆! – Rockstar04 2012-04-06 19:26:24