2016-07-07 8 views
-1

Ich habe eine lokale Variable innerhalb einer Funktion von einem Click-Ereignis aufgerufen. Die Variable unterscheidet sich je nachdem, auf welche Schaltfläche geklickt wird.Verwenden Sie lokale JavaScript-Variable in AJAX-URL

Ich versuche dann, diese Variable an eine andere Funktion übergeben, die AJAX enthält.

Ich kann nicht scheinen, die erste lokale Variable in der Ajax-Funktion zu verwenden.

Ich habe versucht mit "window.myVariable" es global zu machen, aber es funktioniert nicht. Wie Sie im Code sehen können, habe ich auch den Aufruf der nächsten Funktion mit meiner Variable als Parameter, aber keinen Würfel hinzugefügt. Der Fehler, den ich in der Konsole erhalte, ist "variable 'user' ist nicht definiert."

Ich kann nicht auf die lokale Variable außerhalb ihrer ursprünglichen Funktion überhaupt zugreifen. Kann jemand sehen, warum es sich weigert, eine globale Variable zu werden ?.

function getStateOfChat(){ 
 
\t if(!instanse){ 
 
\t \t instanse = true; 
 
\t \t $.ajax({ 
 
\t \t \t type: "POST", 
 
          url: user + "/process.php", 
 
\t \t \t data: { 
 
\t \t \t  \t \t \t 'function': 'getState', 
 
\t \t \t  \t \t \t 'nickname': nickname, 
 
\t \t \t \t \t \t 'file': file 
 
\t \t \t \t \t \t }, 
 
\t \t \t dataType: "json", 
 
\t \t \t 
 
\t \t \t success: function(data){ 
 
\t \t \t \t state = data.state; 
 
\t \t \t \t instanse = false; 
 
\t \t \t }, 
 
\t \t \t }); 
 
\t } \t 
 
}
var user1 = "john"; 
 
var user2 = "andrew"; 
 

 
// ============== USER 1 ============== 
 
    
 

 
     <button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal2" id="chatBtn1"> 
 
       Chat to 
 
       <span class='nickname'> 
 
        John 
 
       </span> 
 
     </button> 
 
<script type="text/javascript"> 
 
    document.getElementById('chatBtn1').addEventListener('click', runScript1); 
 
    function runScript1() { 
 
     var user = user1; 
 
     getStateOfChat(user); 
 
    } 
 
</script> 
 
     
 
    
 
    
 
    // ============== USER 2 ============== 
 
     
 
     <button type="button" class="btn btn-info btn-lg chatBtnMain" data-toggle="modal" data-target="#myModal3" id="chatBtn2"> 
 
       Chat to 
 
       <span class='nickname'> 
 
        Andrew 
 
       </span> 
 
     </button> 
 
<script type="text/javascript"> 
 
    document.getElementById('chatBtn2').addEventListener('click', runScript2); 
 
    
 
    function runScript2() { 
 
     var user = user2; 
 
     getStateOfChat(user); 
 
    } 
 
</script>

+0

einfach Benutzerparameter hinzufügen 'function getStateOfChat (user) {...}' – jcubic

+0

^Wenn das Übergeben eines Parameters auch zu einem 'undefinierten' Fehler führt, bedeutet das den Wert, den Sie' user' zuweisen, dh 'user1' selbst 'undefiniert'. –

+0

^Hinzufügen zu diesem Punkt haben Sie zugeordnet 'var user1 =" John ";' in HTML außerhalb Javascript Codeblöcken – anu

Antwort

0

Ich versuche dann diese Variable auf eine andere Funktion zu übergeben, die AJAX enthält.

Sie passieren erfolgreich:

getStateOfChat(user); 

Das Problem ist, dass man nie wieder zu dir unterwegs sind, die Variable in der Funktion lesen.

url: user + "/process.php", 

Sie versuchen, eine Variable user, aber Sie haben keine Variable genannt, dass in der Funktion aufgerufen zu lesen.

es in der Argument-Parameter angeben:

function getStateOfChat(user){ 

Ich habe versucht, "window.myVariable" können sie global machen, aber es nicht

Vermeiden funktioniert Globals. Sie sind schwieriger, diese lokalen Variablen zu verwalten.

Ich kann nicht auf die lokale Variable außerhalb ihrer ursprünglichen Funktion überhaupt zugreifen. Kann jemand sehen, warum es sich weigert, eine globale Variable zu werden ?.

var user = user1; 

, dass der Zweck the var keyword ist.

+0

Danke Quentin, ich habe alles versucht, aber es sagt mir immer noch, dass der Wert des Benutzers 'undefiniert' ist. Es führt die URL-Abfrage, aber gibt mir einen Fehler in der Konsole sagen "http: // localhost: 8888/bestätigen/undefined/process.php konnte Ressource nicht geladen werden:" –

+0

@ E.Nathan - Es [funktioniert gut] (https: //www.evernote.com/l/AANl7rOZ2DBDhKkFgca_CTsUkTG948xc9oQ) wenn ich [diese Änderung] mache (http://jsbin.com/taqita/2/edit?html,output) – Quentin

+0

Nicht für mich irgendwie. Könnte es sein, dass ich meine Bestellung falsch gemacht habe? Ich schließe zuerst JQuery ein. Führe alle HTML- und Script-Tags mit Event-Listenern als zweite aus und rufe ajax zuletzt an –

Verwandte Themen