2016-03-20 9 views
0

Der folgende Code ich geschrieben, funktioniert nur, wenn der LocalStorage-Wert eine Ganzzahl ist oder wenn der Wert nur aus Ziffern besteht. Im ziemlich neu mit Javascript, so dass es möglich ist, dass die Antwort ist direkt vor mir ..Javascript Uncaught ReferenceError beim Abrufen von Daten aus localStorage

<html> 
<body> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
    <div id="test"></div> 
</body> 
</html> 

<script type="text/javascript"> 

    localStorage.setItem('test', '12345'); 
    localStorage.setItem('foo', 'bar'); 
    localStorage.setItem('john', 'doe'); 
    localStorage.setItem('carl', 14); 

      var name, content; 
      for (var key in localStorage) { 
       $("#test").append('<button onclick="senddata('+localStorage[key]+')">'+key+'</button>'); 
      } 

    function senddata(content) { 
    $.post("processor.php", 
     {text: content}, 
     function(response){ 
      console.log(response); 
     } 
     ); 
    } 
</script> 

Wenn Tasten durch den Code erzeugt durch Drücken der folgenden in der Konsole

Uncaught ReferenceError: bar is not defined 
Uncaught ReferenceError: doe is not defined 
14 
12345 
14 

processor.php

erscheint
if (isset($_POST['text'])) 
    die($_POST['text']); 

Was mache ich falsch? Vielen Dank für das Lesen :)

Antwort

0

ändern

$("#test").append('<button onclick="senddata('+localStorage[key]+')">'+key+'</button>'); 

zu

$("#test").append('<button onclick="senddata(\''+localStorage[key]+'\')">'+key+'</button>'); 

sonst wird es versuchen, die undefinierte Variable zu senden bar (sendata(bar)) anstelle des Strings 'bar' (sendata('bar')).

0

Numerische Literale werden leer geschrieben. ZB 123

Aber Zeichenfolgenliterale benötigen immer einfache oder doppelte Anführungszeichen. Z.B. 'foo'

Überprüfen Sie, ob Sie die Zeichenfolgenliterale nach Bedarf angeben

Haben Sie auch versucht, zu debuggen? Durchlaufen Sie Ihr Skript, um genau zu sehen, was passiert und was nicht. Sie werden wahrscheinlich auch irgendwann einen Fehler erhalten.

Verwandte Themen