2016-11-14 4 views
0

Ich habe Probleme, eine Variable nicht undefiniert zu bekommen. Grundsätzlich, wenn ich auf eine andere Seite gehe und dann auf den Browser zurückklicke, wird die Variable undefiniert und das Skript funktioniert nicht mehr. Es funktioniert jedoch beim ersten Laden, wenn ich den Browser aktualisiere.Variable ist nicht definiert, wenn zur vorherigen Seite zurückgekehrt wird

//player admin callback 
function getPlayerAdmin(admin_callback){ 
    var admin_data = false; 
    var formData = { 
     'player_id' : $('#post-v').attr('data-val') 
    }; 

    $.ajax({ 
     type: 'post', 
     url: '/popins/player/controls', 
     data : formData, 
     dataType : 'json', 
     success: function(data) { 
      admin_callback(data); 
     }, 
     error : function(jqXHR, textStatus, errorThrown){ 
      console.log(jqXHR); 
     } 
    }); 
} 

//load youtube videos 
function loadPlayerVideos(){ 
    var player_id = $('#post-v').attr('data-val'); 

    //get admin 
    getPlayerAdmin(function(output) { 

     console.log(JSON.stringify(output)); 

     if(output.controls.is_admin == true){ 
      admin_data = true; 
     }else{ 
      admin_data = false; 
     } 
    }); 
} 

Die Daten zurückgegeben werden:

{"controls":{"is_admin":true}} 

Mein Problem ist, dass ich eine 'Uncaught Reference: admin_data ist nicht definiert' erhalten.

Würde jemand wissen, warum die Variable undefiniert?

Danke!

Antwort

2

Ich hatte das gleiche Problem zuvor. Ich denke, das ist kein Browser-Problem (wir sprechen über Sitzungen, das ist nur Server-Seite, auf dem Client haben Sie nur das Token zu identifizieren, was ist Ihre Sitzung).

Raten Sie, wenn Sie zurückgehen, wird der Server-Code nicht ausgeführt (der Browser hat die Seite im Cache und lädt nur Assets wie Bilder oder Javascript). Sie können das Verhalten mit local

Beispiel tun, diese Art von Kontrolle clientseitige verbessern:

localStorage.setItem('is_admin', 'true'); 

Und dann im Seite1, können Sie diese Client-Seite hinzufügen:

if(localStorage.getItem('is_admin') === 'true'){ 

} 

Dieser sollte gut funktionieren. Ich hoffe es hilft!

+0

Danke für die einfache Erklärung. Sollte ich mir Sorgen machen, dass dies immer im lokalen Speicher gespeichert wird? Muss ich es irgendwann löschen? –

+0

@ christopher.web Das localStorage-Objekt speichert die Daten ohne Ablaufdatum. Die Daten werden nicht gelöscht, wenn der Browser geschlossen wird – HenryDev

+0

Hmm ok, also wie würde ich die Daten löschen? Was ist das Beste für dieses Zeug? –

Verwandte Themen