Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 34
  1. #1
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Hallo,

    ich habe Nutzerdaten in einem Local Storage gespeichert.
    Wenn ich die Seite aufrufe, möchte ich diese nun Ausgeben lassen "Sie sind Peter Müller".

    Dazu habe ich in HTML folgendes eingefügt:

    HTML-Code:
    <div id="user" data-theme="l"> </div>
    Und am Ende vom Body Tag folgendes JavaScript

    Code:
    <script type="text/javascript">	
    $(function(){
    		var nname = localStorage['nachname'];
    if (nname != undefined) {
    $('#user').append('Du bist angemeldet als: '+localStorage.getItem("vorname")+' '+localStorage.getItem("nachname")+', ADP-Nummer: '+localStorage.getItem("adpnummer")+', E-Mail: '+localStorage.getItem("email")+'<br><br><br>');
    }});   
    </script>
    Wenn ich die Seite jetzt aufrufe, passiert erstmal nichts.
    Drücke ich dann aktualisieren, oder gehe in die Adresszeile mit Enter, etc., dann ist das Feld da.

    Habt ihr da eine Idee oder einen Tipp für mich?

    Vielen Dank und viele Grüße, Philipp
    Geändert von mikdoe (15-07-2014 um 07:26 Uhr) Grund: Gelöst

  2. #2
    Avatar von dbarthel
    dbarthel ist offline Haudegen
    registriert
    11-06-2014
    Beiträge
    641

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Vielleicht solltest du die Funktion in ein
    Code:
    $document.ready()
    packen, dann würde sie ausgeführt, sobald das Dokument gelesen wurde.
    Bin aber nicht sicher, da ich momentan das nicht testen kann.

  3. #3
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Nö, denn $(function(){ ... }); ist identisch mit $(document).ready() ...

    - - - Aktualisiert - - -

    So, jetzt meine längere Antwort ... ^^

    Zunächst einmal solltest Du try/catch verwenden, damit Du bspw. für localStorage den "QUOTA-EXCEEDED_ERR" in die Konsole fangen kannst. Dann musst Du bedenken ...

    - die Funktion könnte im Browser deaktiviert sein
    - es gibt ein oberes Größenlimit; man spricht von max. 5 MB (aber eher weniger als mehr)
    - User können manuell darin Löschen, Modifzieren (jederzeit)
    - Browser entscheiden automatisch, ob der darin befindliche Content "expired" ist
    - Quota (Größe) kommt je Domain (das schließt Subdomains mit ein und die teilen sich den gleichen Ordner)

    (Anmerkung: nur als Hinweis für die spätere Verwendung "draußen"; bspw. für fremde Besucher auf einer Website!)

    localStorage kennt nur vier Methoden: .setItem(), .getItem(), .removeItem() und .clear()

    Speichern: localStorage.setItem("lastname", "Smith");
    Abholen: document.getElementById("demoDIV").innerHTML = localStorage.getItem("lastname");

    Alternativ:
    Speichern: localStorage.lastname = "Smith";
    Abholen: document.getElementById("demoDIV").innerHTML = localStorage.lastname;

    Soviel zum Ausflug in die Basics - jetzt Dein Problem, denn die Antwort hast Du bereits bekommen in meinem Posting.

    Dein Problem? nname! Das ist mit "var nname" nämlich angelegt und daher nicht mehr "undefined" - damit steigt er in die if-Schleife ein und damit siehst Du nix. Wie erwähnt: try/catch und die Verwendung von "null" (ohne ", statt "undefined") ist besser.

    Beste Grüße.

  4. #4
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Vielen Dank für den Hinweis. Ich werd gleich mal danach schauen, aber vorab noch was anderes.

    Ich möchte doch, dass wenn der Localstorage nicht undefiniert ist (also vorhanden),
    dass er dann anfängt die Befehle aus der if-Schleife (also das schreiben) abzuarbeiten?

    Oder hab ich da einen Denkfehler? Vielleicht versteh ich da auch nen ganz typischen Ablauf net?
    Versuch mich da momentan ein bissl rum.

    Zitat Zitat von SteelWheel Beitrag anzeigen
    Nö, denn $(function(){ ... }); ist identisch mit $(document).ready() ...

    Dein Problem? nname! Das ist mit "var nname" nämlich angelegt und daher nicht mehr "undefined" - damit steigt er in die if-Schleife ein und damit siehst Du nix. Wie erwähnt: try/catch und die Verwendung von "null" (ohne ", statt "undefined") ist besser.

  5. #5
    Avatar von dbarthel
    dbarthel ist offline Haudegen
    registriert
    11-06-2014
    Beiträge
    641

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Code:
    var nname = localStorage.nachname
    wennschon.
    Aber du solltest das var- getöns gar nicht venutzen, du kannst den Inhalt von localStorage direkt ausgeben, wie von Steel gezeigt.
    Geändert von dbarthel (12-07-2014 um 12:54 Uhr)

  6. #6
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    So, ich hab nochmal ein wenig gestöbert und das ganze folgendermaßen angepasst.

    Code:
    <script type="text/javascript">	
    $(function(){
    
    
    if(localStorage.length > 0) {
    	
    	try{
    	
    	   $('#vorname').val(localStorage.getItem("vorname"));
    	   $('#nachname').val(localStorage.getItem("nachname"));
    	   $('#adpnummer').val(localStorage.getItem("adpnummer"));
    	   $('#email').val(localStorage.getItem("email"));
    	}catch (error){
    		altert("Fehler: " + error);}
    	}
    });   
    
    
    </script>
    Altert wirft nichts aus, aber die Werte sind beim ersten Ausruf nicht drin, bei der Aktualisierung schon.
    Ich hab ein Beispiel mit einer toDo Liste, da sind alle Elemente gleich verfügbar.

    Das verstehe ich net ganz

  7. #7
    rico2009 Guest

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    altert() ist ja auch falsch, dass Teil heißt alert()...

  8. #8
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Haha, ja, genau.
    Nur leider ändert das nichts am Ergebnis

    Edit:

    Vielleicht nochmal der ganze Quellcode, falls das hilft:

    HTML-Code:
    <!DOCTYPE html> 
    <html>
    <head>
    <meta charset="UTF-8">
    <title>VertriebsInnovation</title>
    	<link rel="stylesheet" href="themes/test_rot.min.css" />
        
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    
    <script src="http://code.jquery.com/mobile/1.1.0-rc.1/jquery.mobile-1.1.0-rc.1.min.js"></script>
    <script src="can.js"> </script>
    	<link rel="stylesheet" href="styles/styles.css" />
      
        
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    	<meta name="apple-mobile-web-app-capable" content="yes" />
    	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
     <script type="application/javascript">
    function myreload(){
        location.reload()
    }
     
     </script>
      
      
    </head> 
    <body>
    
    
    
    <div id="side-menu" >
    <br>
    <br>
    <br>
    	<ul id="ergebnis">
    	<script type="text/javascript">
    	$('#ergebnis').load('./menu.html');
    	</script>
    	</ul>
    </div>
    <div data-role="page" id="start"  data-theme="l" class="pages"> 
    
    	<div data-role="header" data-theme="m" data-position="fixed">
    		<a href="#" class="showMenu" data-role="button" data-icon="grid" data-iconpos="notext">Menu</a>
    		<h1>Vertriebs-App</h1>
    	</div>
    	
    	<div data-role="content" data-theme="l">	
    	
        <h1> <img src="bilder/Streifen-Links.gif" style="float:left;" >
      Ihre Einstellungen </h1>
      
      <br>
      <br>
      <br>
    
     <div id="user" data-theme="l"> </div>
     
    <form onsubmit="daten_speichern(); return false" id="einstellungen" data-theme="m" > Vorname <input type="text" name="vorname" id="vorname" tabindex="1"> <br><br> Nachname <input type="text" name="nachname" id="nachname"  tabindex="2">    <br>   <br> ADP-Nummer  <input type="text" name="adpnummer" id="adpnummer" tabindex="3"><br> <br>E-Mail <input type="email" name="email" id="email" tabindex="4"> <br> <button type="submit" data-theme="m" id="submitform"> Abschicken </button> </form>
      
    	 
     
     <script type="text/javascript">
     
     
     
     function daten_ueberschreiben() {
    	 Check = confirm("Wollen Sie Ihre Daten überschreiben?");
    if (Check == false){
      history.back();	
            } else {
    			localStorage.setItem("vorname", document.forms[0]["vorname"].value);
      		localStorage.setItem("nachname", document.forms[0]["nachname"].value);
      	localStorage.setItem("adpnummer", document.forms[0]["adpnummer"].value);
      	localStorage.setItem("email", document.forms[0]["email"].value);
    		
    }}
    
     function daten_neun() {
    			localStorage.setItem("vorname", document.forms[0]["vorname"].value);
      		localStorage.setItem("nachname", document.forms[0]["nachname"].value);
      	localStorage.setItem("adpnummer", document.forms[0]["adpnummer"].value);
      	localStorage.setItem("email", document.forms[0]["email"].value);
    }
    
    function daten_speichern() {
    			var nname = localStorage['nachname'];
    if (nname != undefined) {
    	daten_ueberschreiben();
    }else{
    	daten_neu();
        
    }
    window.setTimeout(myreload, 3);
    		
    }
    
    
    /*
     */
     
     </script>
            
    	</div>
    </div>
    <script type="text/javascript">
    
    	$(function(){
    		$('#side-menu').slideMenu();
    		
    		if(localStorage.length > 0) {
    	
    	try{
    	
    	   $('#vorname').val(localStorage.getItem("vorname"));
    	   $('#nachname').val(localStorage.getItem("nachname"));
    	   $('#adpnummer').val(localStorage.getItem("adpnummer"));
    	   $('#email').val(localStorage.getItem("email"));
    	}catch (error){
    		alert("Fehler: " + error);}
    	}
    	
    	});
    	
    
    
    
    </script>
    
    </body>
    </html>
    
    
    
    Geändert von PhilippKr (12-07-2014 um 14:34 Uhr)

  9. #9
    Avatar von dbarthel
    dbarthel ist offline Haudegen
    registriert
    11-06-2014
    Beiträge
    641

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Zitat Zitat von PhilippKr Beitrag anzeigen
    Ich hab ein Beispiel mit einer toDo Liste, da sind alle Elemente gleich verfügbar.

    Das verstehe ich net ganz
    Zeig doch bitte nochmal den ganzen Code, inklusive wo du Local Storage setzt und wo es dann ausgegeben werden soll.

    PS:

    Grüße von
    *Altert Einsteis *

  10. #10
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.689

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Beitrag 8 musste erst freigeschaltet werden. Den 9er hab ich dann wg. Doppelpost gelöscht.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  11. #11
    Avatar von dbarthel
    dbarthel ist offline Haudegen
    registriert
    11-06-2014
    Beiträge
    641

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Wozu soll denn die Funktion "myreload" diehnen?
    Ist das ein Versuch, die Aktualisierung zu erwirken?

    Wenn ich das richtig überblickt habe, ist das Formular doch beim Seitenaufruf normal leer und erst mit Absenden des Formulars werden die Daten gespeichert, das ganze wird neu geladen und die Dateb ausgelesen und eingetragen.

    Musst du da jetzt die Seite noch ein zweites Mal manuell neuladen, um sie zu sehen?
    Oder gehts nur um den ersten Seitenaufruf?

    Sorry, das hab ich nicht ganz verstanden.
    Geändert von dbarthel (12-07-2014 um 16:49 Uhr)
    QR-Code scannen, das beste Fachforum für PHP & Javascipt entdecken.


    PS:

    Das Wort 'Kunst' kommt von Können und nicht von Wollen, denn sonst müsste es 'Wunst' heißen.



    שלום

  12. #12
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Die Funktion Reload ist beim rumspielen mit reingerutscht.
    Mit dem Absenden des Formulars werden die Daten im LocalStorage abgelegt und durch das neuladen als Value Daten wieder hervorgeholt.
    Wenn jetzt aber ein Nutzer drauf zugreift, der schon mal seine Daten eingetragen hat, dann sollen diese als Value auch sichtbar sein,
    oder auch in einem div-Container, da bin ich flexibel.

    Aber bei beiden Dingen habe ich das Problem, dass es erst mit einem erneuten laden sichtbar wird.

  13. #13
    Avatar von dbarthel
    dbarthel ist offline Haudegen
    registriert
    11-06-2014
    Beiträge
    641

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Ich könnte mir auch vorstellen, das dein Speichervorgang fehlerhaft ist.

    Ich kenne das nur so:

    Code:
    <form action="#" method="post" id="storage">
    <input type="text" id="val1"/>
    <input type="submit" value="speichern"/>
    </form>
    
    <script type="text/javascript">
     window.localStorage.setItem('Feld 1', document.getElementById('val1').value);
    </script>
    Geändert von dbarthel (12-07-2014 um 17:12 Uhr)

  14. #14
    PhilippKr ist offline Mitglied
    registriert
    12-07-2014
    Beiträge
    27

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Also Werte sind ja drin.
    Ich kann auch drauf zugreifen. Und das passt auch alles.

    Nur die Funktion scheint hier erst bei einem zweiten Aufruf zu greifen.

  15. #15
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: Local Storage Ausgabe nicht bei Seitenaufruf, nur bei nochmaliger Aktualisierung.

    Ist "daten_neu()" neuerdings gleich "daten_neun()"? Und korrigiere bitte den timeout von 3 auf 3000 (Angabe ist in Millisekunden) - thx.

    Um es mit kkapsners Worten zu sagen: Die Konsole hätte es Dir verraten, dass die Funktion bei erstmaligem Schreiben NICHT zur Verfügung steht und die Funktion erst mit Refresh in der Folge dann mit "daten_ueberschreiben()" arbeitet.
    Geändert von mikdoe (12-07-2014 um 21:12 Uhr) Grund: INLINE Tags

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. [FRAGE] javascript storage
    Von Normal im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 22-04-2014, 21:31
  2. Local Storage
    Von jsAnfaenger im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 17-01-2014, 19:15
  3. DOM Storage Internet Explorer
    Von schtob im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 21-11-2011, 17:40
  4. HTML 5 & Javascript Storage problem
    Von Powerburning im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 04-07-2011, 23:58
  5. Local funktionierts aber im Inet nicht
    Von new_developer im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 29-04-2010, 09:28

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •