2016-06-14 35 views
0

Ich habe einige verschiedene Funktionen, die eine Variable setzen, wenn der Benutzer auf eine bestimmte Schaltfläche klickt. Es übergibt dann diese Variable an eine AJAX-Funktion .... außer dass es die Variable nicht übergibt. HierjQuery - Variable innerhalb einer Funktion an eine andere Funktion übergeben

ein Beispiel:

$('#Button1').on('click', function(e) { 
    var add1 = 'yes'; 
    e.preventdefault(); 
}) 
$('#Button2').on('click', function(e) { 
    var add1 = 'no'; 
    e.preventdefault(); 
}) 
$('#DoneButton').on('click', function(e) { 
    submitLink = 'submit.php' 
    dataString = 'add=' + add1; 
    $.ajax({ 
     type: "POST", 
     url: submitLink, 
     data: dataString, 
     cache: false, 
     success: function(data) { 

      /* My Success Notification Here */ 
     } 
    }); 
    e.preventdefault(); 
}) 

Ich habe auch versucht die Variable außerhalb der Funktion erklärt wie:

var add1; 

Das funktioniert auch nicht, kommt nur auf, als ‚undefiniert‘

Was kann ich tun, um das Problem zu beheben?

+1

Da das Hinzufügen der 'var' macht es lokal beschränkt auf die onclick – epascarello

+0

Was kann ich tun, damit es so alle anderen Funktionen können es holen? @epascarello – Mason

+0

nicht verwenden var .. – epascarello

Antwort

3

Lassen Sie die var innerhalb, so dass die Variablenreferenz nicht lokal auf den Klick beschränkt ist.

var add1; 
$('#Button1').on('click', function(e) { 
    add1 = 'yes'; 
    e.preventdefault(); 
}) 
$('#Button2').on('click', function(e) { 
    add1 = 'no'; 
    e.preventdefault(); 
}) 
$('#DoneButton').on('click', function(e) { 
    submitLink = 'submit.php' 
    dataString = 'add=' + add1; 
    $.ajax({ 
    type: "POST", 
    url: submitLink, 
    data: dataString, 
    cache: false, 
    success: function(data) { 

     /* My Success Notification Here */ 
    } 
    }); 
    e.preventdefault(); 
}); 
+0

Perfekt, dachte nicht, dass es so einfach war haha. Das hat mein Problem behoben. Vielen Dank! – Mason

0

var add1 in der Funktion Putting erklärt es vor Ort in dieser Funktion. Wenn Sie es außerhalb deklarieren möchten, müssen Sie var add1; außerhalb der Funktion hinzufügen und dann die var s in der Funktion entfernen, dh `add1 = 'no';

0

Sie müssen die Variable im freigegebenen Bereich definieren, damit alle Funktionen darauf zugreifen können. In diesem Fall ist dies der globale Bereich. Weisen Sie dann einen Wert innerhalb des lokalen Bereichs der Funktion zu. Der einfache Teil, den Sie vermissten, ist, dass Sie das var myVar nicht mehr verwenden müssen, wenn Sie es im freigegebenen Bereich deklariert haben, und das Schlüsselwort var nicht erneut zugewiesen werden muss, weil dadurch eine andere Variable erstellt wird, auf die nur zugegriffen werden kann im lokalen Bereich der Funktion, unabhängig davon, ob sie den gleichen Namen hat.

Verwandte Themen