2012-04-05 2 views
0

Ich versuche, Ajax mit jQuery aufrufen und müssen eine Variable übergeben, die mit PHP auf der Seite geladen wird, zu zwei separaten Funktionen, um entweder meinen Kalender vor oder zurück um die Monate zu verschieben .Global Javascript vars in jQuery Selektor Callback-Funktion

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

Ich habe die Konsole Anrufe dort zu versuchen, dies zu debuggen und ich 4 aus dem ersten .log() aus dem zweiten nicht definiert, und NaN aus dem dritten. Aus diesen drei kann ich sehen, dass die Variable nicht in die .on() - Handler-Funktion übergeben wird.

Die Kalendergenerierungsseite ist include_once auf der Indexseite und dann würde der AJAX verwendet, um die korrekten Daten für den Monat zu regenerieren. Ich brauche den Monat, der in der Get-Zeichenfolge verstrichen ist, um zu wissen, wie weit ich vom aktuellen Monat entfernt bin.

Danke für die Hilfe !!

+2

Sie müssen in den Funktionen des 'var' Stichwort loszuwerden. Wenn Sie die Inkrement-/Dekrementoperatoren verwenden, sollten Sie auch keine Zuweisung verwenden. Nur '++ Monat' oder '- Monat' allein ist alles was Sie brauchen. – Pointy

Antwort

0

Verwenden Sie einfach nicht das Schlüsselwort var innerhalb des Funktionskörpers. var wird eine neue Variable innerhalb der success function instanziieren. Und Sie verwenden die decress/incresse Betreiber falsch, seine einzige month++; und 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

Ok, hat es funktioniert? Oder haben Sie mehr Fehler? –

+0

Ich habe mit Ihren Vorschlägen und Vorschlägen von der jQuery-Site [Wie jQuery funktioniert] (http://docs.jquery.com/How_jQuery_Works#Callback_with_arguments) aktualisiert und Funktionen eingerichtet, um jQuery.on ("click") aufzurufen, ' Funktion next_month (Monat) { \t console.log (Monat); \t $ ("# Kalender") .html (ajax_load) .load (loadUrl, "Monat =" + Monat + "& go = nächster"); Monat ++; console.log (Monat);} ' \t' $ (" #calendar_box "). on (" klick "," # next_month ", function() {next_month (monat);});) Aber wenn ich noch einmal klicke, wird immer noch der ursprüngliche Wert für Monat verwendet, und es wird nicht aktualisiert. – Rockstar04

+0

Got ist sortiert! Vielen Dank!! – Rockstar04