0

我正在尝试使用 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,第二个中未定义,第三个中得到 NaN。从这三个我可以看到该变量没有被传递到 .on() 处理函数中。

日历生成页面在索引页面上包含_once,然后 AJAX 将用于重新生成月份的正确数据。我需要在获取字符串中传递的月份才能知道我需要偏移的当前月份有多远。

谢谢您的帮助!!

4

1 回答 1

0

只需不要var在函数体内使用关键字。var将在success function. 而且您错误地使用了递减/递增运算符,它唯一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
});
于 2012-04-05T20:26:51.283 回答